Puis-je utiliser cStringIO le même que StringIO?
Question
Je l'ai fait:
import cStringIO.StringIO as StringIO
Et je me rends compte que je l'ai utilisé partout. Es-ce bien? Est-il traité comme StringIO?
La solution
Ils ne sont pas les mêmes. cStringIO
ne gère pas correctement les caractères 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)
Autres conseils
Et vous ne pouvez attributs définis sur une instance 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'
Plusieurs bibliothèques dépendent des objets ressemblant à des fichiers ayant soit un attribut name
ou content_type
, si cStringIO.StringIO ne fonctionne pas dans ces cas.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow