为什么截断BytesIO会搞砸它?

时间:2016-08-23 19:15:21

标签: python python-3.x bytesio

在OSX上的Python 3.5.1上运行:

import io

b = io.BytesIO()

b.write(b'222')
print(b.getvalue())

b.truncate(0)
b.write(b'222')
print(b.getvalue())

产地:

b'222'
b'\x00\x00\x00222'

因此以某种方式截断BytesIO会导致它在开始时插入额外的零字节?为什么呢?

1 个答案:

答案 0 :(得分:3)

truncate不会移动文件指针。所以下一个字节写入下一个位置。你也要寻求开始:

b.seek(0)
b.truncate()