如何在Python中将二进制数据写入文本文件?

时间:2017-06-02 11:36:31

标签: python binary-data file-format

我需要将文本,然​​后二进制数据写入文件。例如,我想用内容编写文件:

BESTFORMAT
NUMLINES 42
FIELDS FOO BAR SPAM
DATATYPES INT32 FLOAT64 FLOAT64
FILETYPE BINARY
???d?'Ӈ   T???'Ѥ??X??\??
?? R??&??X??\???????
??zR??X??\????????
...

但是,在Python(3.5)中,您无法以可以编写ASCII数据,然后编写二进制数据的方式打开文件。

我试过了:

  • 将我的二进制数据转换为文本(没有好处,因为它输出b'5 42.7 0.8'

  • 将我的文本数据编码为二进制文件并将文件打开为二进制文件(不好,因为我有一个二进制文件,这不是我想要的)

1 个答案:

答案 0 :(得分:0)

好的,事实证明我一直都有答案,我只是不知道。

您只需以文本模式打开文件:

with open("file.best", "w") as fl:
    fl.write("BESTFORMAT\n\
NUMLINES 42\n\
FIELDS FOO BAR SPAM\n\
DATATYPES INT32 FLOAT64 FLOAT64\n\
FILETYPE BINARY\n\
")

然后以附加方式打开文件,二进制模式:

with open("file.best", "ab") as fl:
    fl.write(nparr.tostring())

引起我兴趣的是我的文本编辑器以十六进制模式打开文件,所以我只是一堆十六进制代码。当我用UTF-8编码打开文件时,我看到了ASCII标题和它下面的二进制数据。