请告诉我在python中将8位值写入文件的最佳方法。值可以在0到255之间。 我按如下方式打开文件:
f = open('temp', 'wb')
假设我写的值是一个0到255之间的int,赋值给变量,例如
x = 13
这不起作用:
f.write(x)
..如专家所知,不起作用。 python抱怨无法写入缓冲区接口的内容。作为一种解决方法,我将其写成十六进制数字。因此:
f.write(hex(x))
..这有效,但不仅空间效率低,而且显然不是正确的python方式。请帮忙。感谢。
答案 0 :(得分:3)
尝试显式创建bytes
对象:
f.write(bytes([x]))
您还可以输出一系列字节,如下所示:
f.write(bytes([65, 66, 67]))
答案 1 :(得分:1)
作为替代方案,您可以使用struct模块...
import struct
x = 13
with open('temp', 'wb') as f:
f.write(struct.pack('>I', x)) # Big-endian, unsigned int
从文件中读取x ...
with open('temp', 'rb') as f:
x, = struct.unpack(">I", f.read())
答案 2 :(得分:0)
您只需要编写bytes
数据类型的项目,而不是整数。