from functools import partial
from io import BytesIO
byteString = b'Cras mollis mauris vitae libero ornare finibus Donec nibh odio'
n = 4
byte_stream = BytesIO(byteString)
for block in iter(partial(byte_stream.read, n), b''):
print(block)
输出:
b'Cras'
b' mol'
b'lis '
b'maur'
b'is v'
b'itae'
b' lib'
b'ero '
b'orna'
b're f'
b'inib'
b'us D'
b'onec'
b' nib'
b'h od'
b'io'
我认为除了加载整个阵列然后对其进行切片之外,没有其他好方法。如果您的内存中已经有bytearray,那么这不是问题,但是如果您从文件中读取bytearray,则内存效率较低
或者,可以将字节累积到单独的字节数组中
或者,如果byteString是迭代器,例如来自
open('...', 'rb')
有很多方法可以做你想做的事。这里有一个相对简单的方法,它将字节字符串视为字节流,然后使用内置的^{} 函数和^{} 组合,一次以
n
(或更少)字节块处理它重要的是要注意
iter()
函数支持的可选的sentinel
参数b''
值是如何用于在遇到流的结尾时引发StopIteration
的输出:
相关问题 更多 >
编程相关推荐