Python将字节字符串写入文件

Python将字节字符串写入文件,python,python-3.x,string,file,byte,Python,Python 3.x,String,File,Byte,如何使用python以字节模式将一串字节写入文件 我有: ['0x28', '0x0', '0x0', '0x0'] 如何将0x28、0x0、0x0、0x0写入文件?我不知道如何将此字符串转换为有效字节并将其写入。映射到bytearray()或bytes()对象,然后将其写入文件: with open(outputfilename, 'wb') as output: output.write(bytearray(int(i, 16) for i in yoursequence)) 另

如何使用python以字节模式将一串字节写入文件

我有:

['0x28', '0x0', '0x0', '0x0']
如何将0x28、0x0、0x0、0x0写入文件?我不知道如何将此字符串转换为有效字节并将其写入。

映射到
bytearray()
bytes()
对象,然后将其写入文件:

with open(outputfilename, 'wb') as output:
    output.write(bytearray(int(i, 16) for i in yoursequence))
另一个选项是使用将十六进制字符串转换为
字节
值:

from binascii import unhexlify

with open(outputfilename, 'wb') as output:
    output.write(unhexlify(''.join(format(i[2:], '>02s') for i in b)))
在这里,我们必须首先切掉
0x
部分,然后重新格式化该值,用零填充它,并将整个值合并为一个字符串。

在Python 3.X中,
bytes()
将整数序列转换为字节序列:

>>> bytes([1,65,2,255])
b'\x01A\x02\xff'
生成器表达式可用于将序列转换为整数(请注意,
int(x,0)
根据其前缀将字符串转换为整数。
0x
选择十六进制):

将它们结合起来:

>>> bytes(int(x,0) for x in ['0x28','0x0','0x0','0x0'])
b'(\x00\x00\x00'
并写出:

>>> L = ['0x28','0x0','0x0','0x0']
>>> with open('out.dat','wb') as f:
...  f.write(bytes(int(x,0) for x in L))
...
4
如上所述的字节数
如何以字符串形式写入文件。我想在文件中打印显示

您是否遵循了@Martijn Pieters的回答?
>>> L = ['0x28','0x0','0x0','0x0']
>>> with open('out.dat','wb') as f:
...  f.write(bytes(int(x,0) for x in L))
...
4
b=b'\xac\xed\x00\x05sr\x00\x0emytest.ksiazka\x00\x00\x00\x00\x00\x00\x00\x01\x02\x00\x03L\x00\x05autort\x00\x12Ljava/lang/String;L\x00\x03rokt\x00\x13Ljava/lang/Integer;L\x00\x05tytulq\x00~\x00\x01xpt\x00\x04testpp'