如何在Python 3中将字节作为流读取
我正在读取一个二进制文件(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'