Zrobiłem to:Czy mogę używać cStringIO tak samo jak StringIO?
import cStringIO.StringIO as StringIO
I zdaję sobie sprawę Używam go wszędzie. To dobrze? Czy jest traktowany tak samo jak StringIO?
Zrobiłem to:Czy mogę używać cStringIO tak samo jak StringIO?
import cStringIO.StringIO as StringIO
I zdaję sobie sprawę Używam go wszędzie. To dobrze? Czy jest traktowany tak samo jak StringIO?
To nie to samo. cStringIO
nie obsługuje poprawnie znaków 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)
Nie można ustawić atrybuty na przykład 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'
Kilka bibliotek zależy od obiektów plikopodobny mają albo atrybut name
lub content_type
, więc cStringIO.StringIO nie działa w te instancje.
Czy mogę to zmienić? – TIMEX
@ TIMEX: Czy potrzebujesz wsparcia dla znaków Unicode poza ASCII? –
Nie mam pojęcia. Używam StringIO do zdjęć. i odczytywanie zdjęć, a następnie przesyłanie ich do S3 – TIMEX