lo hice:¿Puedo usar cStringIO de la misma manera que StringIO?
import cStringIO.StringIO as StringIO
y me doy cuenta que he estado usando en todas partes. ¿Eso está bien? ¿Se trata igual que StringIO?
lo hice:¿Puedo usar cStringIO de la misma manera que StringIO?
import cStringIO.StringIO as StringIO
y me doy cuenta que he estado usando en todas partes. ¿Eso está bien? ¿Se trata igual que StringIO?
No son lo mismo. cStringIO
no maneja correctamente los caracteres 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)
ni se puede establecer atributos en una instancia 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'
Varias bibliotecas dependen de objetos de tipo fichero que tienen o bien un atributo name
o content_type
, por lo cStringIO.StringIO no funciona en estas instancias.
¿Debería cambiarlo todo? – TIMEX
@TIMEX: ¿Necesita soporte para caracteres Unicode más allá de ASCII? –
No tengo idea. Solo estoy usando StringIO para fotos. y leer imágenes, luego subirlas a S3 – TIMEX