簡體   English   中英

如何在python中將二進制和asci數據寫入文件?

[英]How to write binary and asci data into a file in python?

我有這個有線協議我正在實現,我必須將二進制和ASCII數據寫入同一個文件,我怎樣才能同時執行此操作,或者至少結果將是具有混合asci和二進制數據的文件?

我知道open("myfile", "rb")確實以二進制模式打開myfile,除了我找不到解決方法如何解決這個問題!

你寫入文件的內容實際上是“字節”。 Python 2或3(*就在Python2中它是str ,我們在Python 3中將其更改為更清晰明確的bytes )。

所以:

with open("file.ext", "w") as f:
    f.write(b"some bytes")

例:

bash-4.3$ python
Python 2.7.6 (default, Apr 28 2014, 00:50:45) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> with open("file.ext", "w") as f:
...     f.write(b"some bytes")
... 
>>> 
bash-4.3$ cat file.ext
some bytesbash-4.3$ 

通常,如果要處理Unicode字符串,則使用編碼( Python 3中的str ,Python 2中的unicode )。 例如:

s = "Hello World!"

with open("file.ext", "w") as f:
    f.write(s.encode("utf-8"))

注:如評論中所述; open(filename, "wb")並沒有真正做到你認為它做的事情 - 它只會影響新行的處理方式。

在Python 2下, 唯一不同的二進制模式是在寫入時如何翻譯換行符; \\n將被轉換為依賴於平台的行分隔符。

換句話說,只需將ASCII字節字符串直接寫入二進制文件,就Python而言,ASCII數據和二進制數據之間沒有區別。

暫無
暫無

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

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