problèmes Unicode lors de l'utilisation io.StringIO pour se moquer d'un fichier
Question
J'utilise un objet io.StringIO
pour se moquer d'un fichier dans une unité de test pour une classe. Le problème est que cette classe semble attendre toutes les chaînes sont unicode par défaut, mais la str
de builtin ne retourne pas les chaînes unicode:
>>> buffer = io.StringIO()
>>> buffer.write(str((1, 2)))
TypeError: can't write str to text stream
>>> buffer.write(str((1, 2)) + u"")
6
fonctionne. Je suppose que cela est dû au fait la concaténation avec une chaîne de caractères Unicode rend le résultat unicode ainsi. Y at-il une solution plus élégante à ce problème?
La solution
Le paquet io est compatible python3.x. En Python 3, les chaînes sont unicode par défaut.
Votre code fonctionne bien avec le package standard StringIO,
>>> from StringIO import StringIO
>>> StringIO().write(str((1,2)))
>>>
Si vous voulez faire le python 3 façon, l'utilisation unicode () au lieu de str (). Vous devez être explicite ici.
>>> io.StringIO().write(unicode((1,2)))
6
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow