Python 如何将1字节写入二进制文件?

Python 如何将1字节写入二进制文件?,python,filehandle,writing,Python,Filehandle,Writing,我已经尽了一切努力在python中只向文件写入一个字节 i = 10 fh.write( six.int2byte(i) ) 将输出“0x00 0x0a” fh.write( struct.pack('i', i) ) 将输出“0x00 0x0a 0x00 0x00” 我想将一个值为10的字节写入文件。您只需使用该值构建一个字节对象: with open('my_file', 'wb') as f: f.write(bytes([10])) 这只适用于python3。如果用byte

我已经尽了一切努力在python中只向文件写入一个字节

i = 10
fh.write( six.int2byte(i) )
将输出“0x00 0x0a”

fh.write( struct.pack('i', i) )
将输出“0x00 0x0a 0x00 0x00”


我想将一个值为10的字节写入文件。

您只需使用该值构建一个
字节
对象:

with open('my_file', 'wb') as f:
    f.write(bytes([10]))
这只适用于python3。如果用
bytearray
替换
bytes
,它在python2和pytho3中都能工作

另外:请记住以二进制模式打开文件以向其写入字节。

struct.pack(“=b”,i)
(有符号)和
struct.pack(“=b”,i)
(无符号)将整数打包为单个字节,您可以在。(
“=”
用于使用标准尺寸并忽略对齐-以防万一),所以您可以这样做

import struct
i=10
with open('binfile', 'wb') as f:
    f.write(struct.pack("=B",i))

你是如何打开fh的?你说的是,还是实际的?在python2.7中,这会生成:0x31 0x5b 0x3d 0x30。使用bytearray,它会生成0x00 0x0aI收回它-我使用hextdump-x查看填充额外0x00的文件。bytearray可以工作。bytes/bytearray的值从0到255(无符号)-所以不要输入负数这也会生成0x00 0x0a(wither=b或=b选项)@reza-刚刚在MSYS2 python2和python3上尝试了这个方法,我得到了一个大小正好为1字节的文件;当使用
dhex
hextump-C binfile查看时,仅使用0x0a作为内容