2011-01-13 15 views

答えて

25

これらは同じではありません。 cStringIOはUnicode文字を正しく処理しません。

>>> StringIO.StringIO().write(u'\u0080') 

>>> cStringIO.StringIO().write(u'\u0080') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeEncodeError: 'ascii' codec can't encode character u'\x80' in position 0: ordinal not in range(128) 
+0

私はそれをすべて変更する必要がありますか? – TIMEX

+0

@TIMEX:ASCII以外のUnicode文字のサポートが必要ですか? –

+0

いいえ、考えられません。私は絵のためにStringIOを使用しています。写真を読んでS3にアップロードする – TIMEX

6

もあなたはcStringIO.StringIOインスタンスの属性を設定することができます。cStringIO.StringIOはでは動作しませんので

>>> from cStringIO import StringIO 
>>> s = StringIO() 
>>> s.name = 'myfile' 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'cStringIO.StringO' object has no attribute 'name' 

いくつかのライブラリは、どちらかnameまたはcontent_type属性を持つファイルのようなオブジェクトに依存これらのインスタンス。