Comment envelopper une chaîne dans un fichier en Python?
Question
Comment créer un objet de type fichier (même type de fichier que le fichier) avec le contenu d'une chaîne?
La solution
Pour Python 2.x, utilisez le module StringIO . Par exemple:
>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'
J'utilise cStringIO (ce qui est plus rapide), mais notez qu'il ne n'accepte pas les caractères Unicode. chaînes qui ne peuvent pas être codées sous forme de chaînes ASCII simples . (Vous pouvez passer à StringIO en remplaçant "de cStringIO" par "de StringIO".)
Pour Python 3.x, utilisez le io
module.
f = io.StringIO('foo')
Autres conseils
En Python 3.0:
import io
with io.StringIO() as f:
f.write('abcdef')
print('gh', file=f)
f.seek(0)
print(f.read())
Deux bonnes réponses. J'ajouterais un petit truc: si vous avez besoin d'un objet fichier réel (certaines méthodes en attendent un, pas seulement une interface), voici un moyen de créer un adaptateur:
Ceci fonctionne pour Python2.7 et Python3.x:
io.StringIO(u'foo')