web-dev-qa-db-fra.com

Comment encapsuler une chaîne dans un fichier en Python?

Comment créer un objet de type fichier (même type de canard que File) avec le contenu d'une chaîne?

71
Daryl Spitzer

Pour Python 2.x, utilisez le module StringIO . Par exemple:

>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'

J'utilise cStringIO (qui est plus rapide), mais notez qu'il ne le fait pas accepte les chaînes Unicode qui ne peuvent pas être encodées en clair ASCII chaînes . (Vous pouvez passer à StringIO en remplaçant "de cStringIO" par "de StringIO".)

Pour Python 3.x, utilisez le module io .

f = io.StringIO('foo')
100
Daryl Spitzer

Dans Python 3.0:

import io

with io.StringIO() as f:
    f.write('abcdef')
    print('gh', file=f)
    f.seek(0)
    print(f.read())
25
jfs

Deux bonnes réponses. J'ajouterais une petite astuce - si vous avez besoin d'un véritable objet fichier (certaines méthodes en attendent un, pas seulement une interface), voici un moyen de créer un adaptateur:

3
e-satis

Cela fonctionne pour Python2.7 et Python3.x:

io.StringIO(u'foo')
2
guettli