python - 为什么截断 BytesIO 会把它搞砸?

标签 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 会导致它开始在开头插入额外的零字节?为什么?

最佳答案

truncate 不会移动文件指针。所以下一个字节被写入下一个位置。你也必须寻找到开始:

b.seek(0)
b.truncate()

关于python - 为什么截断 BytesIO 会把它搞砸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39109068/

相关文章:

python - 从 Azure 服务总线读取的数据流

python - 如何在同一选项卡中使用 selenium 函数? (在 python 上)

python - 如何将损失函数中的变量存储到实例变量中

python - 获取 numpy 的平方和立方并附加它

linux - PYSNMP 打开/关闭交换机端口

python-3.x - tempfile 模块和 IO 类文件对象有什么区别

python - 如何使用动态类值处理 Selenium 中的非选择下拉菜单

python-3.x - 无法安装任何 python 包 pip SSLError

python - PIL 无法识别 io.BytesIO 对象的图像文件

python-3.x - 什么时候应该使用 BytesIO .getvalue() 而不是 .getbuffer()?