在python v3.3中将8位值写入二进制文件

时间:2013-08-13 06:45:47

标签: python binaryfiles

请告诉我在python中将8位值写入文件的最佳方法。值可以在0到255之间。 我按如下方式打开文件:

f = open('temp', 'wb')

假设我写的值是一个0到255之间的int,赋值给变量,例如

x = 13

这不起作用:

f.write(x)

..如专家所知,不起作用。 python抱怨无法写入缓冲区接口的内容。作为一种解决方法,我将其写成十六进制数字。因此:

f.write(hex(x))

..这有效,但不仅空间效率低,而且显然不是正确的python方式。请帮忙。感谢。

3 个答案:

答案 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数据类型的项目,而不是整数。