Comment créer un objet de type fichier (même type de fichier que File) avec le contenu d'une chaîne?Comment insérer une chaîne dans un fichier en Python?
Répondre
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 accept Unicode strings that cannot be encoded as plain ASCII strings. (Vous pouvez passer à StringIO en remplaçant "de cStringIO" par "de StringIO".)
Pour Python 3.x, utilisez le module io
.
f = io.StringIO('foo')
En Python 3.0:
import io
with io.StringIO() as f:
f.write('abcdef')
print('gh', file=f)
f.seek(0)
print(f.read())
@ABB la réponse acceptée montre déjà un tel usage. Ma réponse est complémentaire: elle montre 'with'-statement et écrit, imprime, cherche, lit des méthodes. – jfs
Deux bonnes réponses. Je rajouterais un petit truc - si vous avez besoin d'un objet réel de fichiers (certaines méthodes attendent, pas seulement une interface), voici un moyen de créer un adaptateur:
"Page non trouvée" - http://www.rfk.id.au/software/projects/filelike/api/filelike.htm – jfs
Quelle honte. Impossible de trouver l'original ... –
Semble être de retour maintenant (7 ans plus tard;) –
Cette fonctionne pour python2.7 et Python3.x:
io.StringIO(u'foo')
Il y a une raison maintenant d'utiliser cStringIO: cStringIO ne supporte pas les chaînes unicode. –
Je pense qu'une meilleure idée est de faire 'import cStringIO as StringIO'. De cette façon, si vous avez besoin de passer à l'implémentation python pure pour une raison quelconque, vous n'avez besoin de changer qu'une seule ligne. –
Cela fonctionne aussi pour Python2.7: 'io.StringIO (u'foo ')' Je l'utiliserais – guettli