想在文本模式打開的文件中寫入原始的字節數據
將字節數據直接寫入文件的緩沖區即可
>>> import sys >>> sys.stdout.write(b'Hello\n') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: must be str, not bytes >>> sys.stdout.buffer.write(b'Hello\n')
Hello
5
>>>
類似的,能夠通過讀取文本文件的buffer 屬性來讀取二進制數據
I/O 系統以層級結構的形式構建而成。文本文件是通過在一個擁有緩沖的二進制模式文件上增加一個Unicode 編碼/解碼層來創建。buffer 屬性指向對應的底層文件。如果你直接訪問它的話就會繞過文本編碼/解碼層。
默認情況下,sys.stdout 總是以文本模式打開的。但是如果在寫一個需要打印二進制數據到標准輸出的腳本的話,可以使用上面演示的技術來繞過文本編碼層。
