《Python Cookbook 3rd》笔记(5.17):将字节写入文本文件
生活随笔
收集整理的這篇文章主要介紹了
《Python Cookbook 3rd》笔记(5.17):将字节写入文本文件
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
將字節(jié)寫入文本文件
問題
你想在文本模式打開的文件中寫入原始的字節(jié)數(shù)據(jù)。
解法
將字節(jié)數(shù)據(jù)直接寫入文件的緩沖區(qū)即可,例如:
>>> 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 屬性來讀取二進(jìn)制數(shù)據(jù)。
討論
I/O 系統(tǒng)以層級(jí)結(jié)構(gòu)的形式構(gòu)建而成。文本文件是通過在一個(gè)擁有緩沖的二進(jìn)制模式文件上增加一個(gè) Unicode 編碼/解碼層來創(chuàng)建。 buffer 屬性指向?qū)?yīng)的底層文件。如果你直接訪問它的話就會(huì)繞過文本編碼/解碼層。
本小節(jié)例子展示的 sys.stdout 可能看起來有點(diǎn)特殊。默認(rèn)情況下, sys.stdout 總是以文本模式打開的。但是如果你在寫一個(gè)需要打印二進(jìn)制數(shù)據(jù)到標(biāo)準(zhǔn)輸出的腳本的話,你可以使用上面演示的技術(shù)來繞過文本編碼層。
總結(jié)
以上是生活随笔為你收集整理的《Python Cookbook 3rd》笔记(5.17):将字节写入文本文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java设计模式(4 / 23):单例模
- 下一篇: Python(23)-面向对象2-继承,