Я сделал это:Могу ли я использовать cStringIO так же, как StringIO?
import cStringIO.StringIO as StringIO
И я понимаю, что я использую его везде. Это прекрасно? Рассматривается ли это как StringIO?
Я сделал это:Могу ли я использовать cStringIO так же, как StringIO?
import cStringIO.StringIO as StringIO
И я понимаю, что я использую его везде. Это прекрасно? Рассматривается ли это как StringIO?
Это не то же самое. 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)
Также вы можете установить атрибуты экземпляра 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 не работает эти случаи.
Должен ли я изменить все это? – TIMEX
@TIMEX: Вам нужна поддержка символов Unicode за пределами ASCII? –
Не знаю. Я просто использую StringIO для фотографий. и чтение изображений, а затем загрузить его в S3 – TIMEX