如何在Python 3中将字节作为流读取

49 投票
1 回答
48530 浏览
提问于 2025-04-17 15:46

我正在读取一个二进制文件(ogg vorbis格式),并提取一些数据包以便后续处理。这些数据包是Python中的字节对象,使用“read(n_bytes)”方法读取它们会很方便。现在我的代码大致是这样的:

packet = b'abcd'
some_value = packet[0:2]
other_value = packet[2:4]

我想要的效果是这样的:

packet = b'abcd'
some_value = packet.read(2)
other_value = packet.read(2)

我该如何从字节对象创建一个可读取的流呢?

1 个回答

68

你可以使用一个像文件一样的对象,叫做 io.BytesIO

>>> import io
>>> file = io.BytesIO(b'this is a byte string')
>>> file.read(2)
b'th'
>>> file.read(2)
b'is'

撰写回答