2011-01-13 8 views

Respuesta

25

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) 
+0

¿Debería cambiarlo todo? – TIMEX

+0

@TIMEX: ¿Necesita soporte para caracteres Unicode más allá de ASCII? –

+0

No tengo idea. Solo estoy usando StringIO para fotos. y leer imágenes, luego subirlas a S3 – TIMEX

6

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.

Cuestiones relacionadas