2017-06-02 71 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 \ 」)'這樣你就可以使用了文件的二進制模式 –