2009-08-14 57 views
1

問:BytesIO與Python V2.5

我如何獲得工作方式類似於StringIO的爲Python 2.5字節流?

應用:

我轉換PDF文本,但不希望將文件保存到硬盤上。

其他的想法:

我想我可以使用StringIO的,但沒有模式參數(我猜「字符串」文本暗示模式)。

顯然,io.BytesIO類在v2.6中是新的,所以對我也不適用。

我有一個tempfile模塊的解決方案,但我想避免任何讀/寫/從硬盤。

回答

4

在Python 2.x中,「string」表示「字節」,「unicode」表示「string」。您應該使用StringIOcStringIO模塊。該模式將取決於您將哪種數據作爲緩衝區參數傳入。

+0

謝謝,我感覺有點此刻智障。 :-P – tgray 2009-08-14 18:00:11

+0

你知道爲什麼有一個單獨的BytesIO在2.6中,如果StringIO做同樣的事情? – tgray 2009-08-14 18:00:52

+0

向前兼容性 - 2.6意味着可以輕鬆過渡到3.0,所以某些3.0功能(例如'io'模塊)已被回溯。 – 2009-08-14 18:02:22

2

如果你正在使用PDF,然後StringIO應該罰款,只要你留意文檔:

的StringIO對象可以接受Unicode或8位字符串,但兩者攪拌可能需要謹慎。如果同時使用這兩個字符串,那麼不能解釋爲7位ASCII(使用第8位)的8位字符串將在調用getvalue()時引發UnicodeError。

注意這是真正爲cStringIO

不同於由StringIO的模塊實現的存儲器中的文件,那些由該模塊提供的是不能夠接受的不能被編碼爲純Unicode字符串ASCII字符串。

查看完整的文檔:

相關問題