簡體   English   中英

如何在 Python 中將二進制數據寫入文本文件?

[英]How do I write binary data to a text file in Python?

我需要寫入文本,然后將二進制數據寫入文件。 例如,我想用內容編寫文件:

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

但是,在 Python 中,您無法以可以寫入 ASCII 數據和二進制數據的方式打開文件。


我試過:

  • 將我的二進制數據轉換為文本(不好,因為它輸出b'5 42.7 0.8'

  • 將我的文本數據編碼為二進制並將文件作為二進制打開(不好,因為那時我有一個二進制文件)。 編輯:事實證明這是有效的,但我需要在我的文本編輯器中使用 UTF-8 編碼打開文件

多種解決方案:

  1. 寫入文本數據,然后以追加二進制模式重新打開並寫入二進制數據
with open("file", "w") as f:
    f.write("text")
with open("file", "ab") as f:
    f.write(b"bytes")
  1. 將文本數據轉換為字節
with open("file", "wb") as f:
    f.write("text".encode())
    f.write(b"bytes")
  1. 將文本數據寫入文本包裝器
import io
with open("file", "wb") as f:
    f_text = io.TextIOWrapper(f, write_through=True)
    f_text.write("text")
    f.write(b"bytes")

注意:一些文本編輯器會在文件中看到非 utf-8 字節,並以十六進制模式查看文件。 要查看文本,請在文本編輯器中以 UTF-8 編碼重新打開文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM