python 将二进制数据读取到可变缓冲区

2022-05-20  本文已影响0人  孙广宁
5.9 我们想将二进制数据读入到一个可变缓冲区,中间不经过任何的拷贝环节
>>> def r_into_buffer(filename):
...     buf = bytearray(os.path.getsize(filename))
...     with open(filename,'rb') as f:
...         f.readinto(buf)
...     return buf
...
>>> with open('test.bin','wb') as f:
...     f.write(b'Hello World')
...
11
>>> buf = r_into_buffer('test.bin')
>>> buf
bytearray(b'Hello World')
>>> buf[0:5]
bytearray(b'Hello')
>>> with open('new_test.bin','wb') as f:
...     f.write(buf)
...
11
>>> with open('new_test.bin','rb') as f:
...     f.read()
...
b'Hello World'
>>>
>>> r_s = 32
>>> buf = bytearray(r_s)
>>> with open('test.bin','rb') as f:
...     while True:
...         n = f.readinto(buf)
...         if n < r_s:
...             print("test data < 32 will break")
...             break
...         else:
...             print("test data >32")
...
test data < 32 will break
>>>
上一篇 下一篇

猜你喜欢

热点阅读