我如何獲得工作方式類似於StringIO的爲Python 2.5字節流?
應用:
我轉換PDF文本,但不希望將文件保存到硬盤上。
其他的想法:
我想我可以使用StringIO的,但沒有模式參數(我猜「字符串」文本暗示模式)。
顯然,io.BytesIO類在v2.6中是新的,所以對我也不適用。
我有一個tempfile模塊的解決方案,但我想避免任何讀/寫/從硬盤。
我如何獲得工作方式類似於StringIO的爲Python 2.5字節流?
應用:
我轉換PDF文本,但不希望將文件保存到硬盤上。
其他的想法:
我想我可以使用StringIO的,但沒有模式參數(我猜「字符串」文本暗示模式)。
顯然,io.BytesIO類在v2.6中是新的,所以對我也不適用。
我有一個tempfile模塊的解決方案,但我想避免任何讀/寫/從硬盤。
在Python 2.x中,「string」表示「字節」,「unicode」表示「string」。您應該使用StringIO
或cStringIO
模塊。該模式將取決於您將哪種數據作爲緩衝區參數傳入。
如果你正在使用PDF,然後StringIO
應該罰款,只要你留意文檔:
的StringIO對象可以接受Unicode或8位字符串,但兩者攪拌可能需要謹慎。如果同時使用這兩個字符串,那麼不能解釋爲7位ASCII(使用第8位)的8位字符串將在調用getvalue()時引發UnicodeError。
注意這是不真正爲cStringIO
:
不同於由StringIO的模塊實現的存儲器中的文件,那些由該模塊提供的是不能夠接受的不能被編碼爲純Unicode字符串ASCII字符串。
查看完整的文檔:
謝謝,我感覺有點此刻智障。 :-P – tgray 2009-08-14 18:00:11
你知道爲什麼有一個單獨的BytesIO在2.6中,如果StringIO做同樣的事情? – tgray 2009-08-14 18:00:52
向前兼容性 - 2.6意味着可以輕鬆過渡到3.0,所以某些3.0功能(例如'io'模塊)已被回溯。 – 2009-08-14 18:02:22