2017-06-02 263 views
-1

我需要写文本,然后将二进制数据写入文件。例如,我想将文件写入与内容:如何在Python中将二进制数据写入文本文件?

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'

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

+0

可能重复的[Python如何写入二进制文件?](https://stackoverflow.com/questions/18367007/python-how-to-write-to-a-binary-file) –

回答

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头和它下面的二进制数据。

+2

你可能有使用'fl.write(b “BESTFORMAT \ n \ NUMLINES 42 \ n \ FIELDS FOO BAR垃圾邮件\ n \ DATATYPES INT32 FLOAT64 FLOAT64 \ n \ FILETYPE BINARY \ n \ ”)'这样你就可以使用了文件的二进制模式 –