2011-01-13 5 views

ответ

25

Это не то же самое. cStringIO неправильно обрабатывает символы юникода.

>>> 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: Вам нужна поддержка символов Unicode за пределами ASCII? –

+0

Не знаю. Я просто использую StringIO для фотографий. и чтение изображений, а затем загрузить его в S3 – TIMEX

6

Также вы можете установить атрибуты экземпляра 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 атрибут, поэтому cStringIO.StringIO не работает эти случаи.

Смежные вопросы