Wie wickeln wir eine Zeichenfolge in einer Datei in Python?
Frage
Wie kann ich eine Datei-ähnliche Objekt (gleiche Ente Typ als Datei) mit dem Inhalt einer Zeichenfolge erstellen?
Lösung
Für Python 2.x, verwenden Sie die StringIO Modul. Zum Beispiel:
>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'
Ich benutze cStringIO (was schneller ist), aber beachten Sie, dass es nicht Unicode akzeptieren Strings, die nicht als reine ASCII-Zeichenfolgen codiert werden. (Sie können auf StringIO wechseln, indem "von cStringIO" auf "von StringIO").
Für Python 3.x, verwenden Sie die io
Modul .
f = io.StringIO('foo')
Andere Tipps
In Python 3.0:
import io
with io.StringIO() as f:
f.write('abcdef')
print('gh', file=f)
f.seek(0)
print(f.read())
Zwei gute Antworten. Ich würde einen kleinen Trick hinzufügen - wenn Sie ein echtes Dateiobjekt benötigen (einige Methoden zu erwarten, nicht nur eine Schnittstelle), hier ist ein Weg, einen Adapter zu erstellen:
Dies funktioniert für python2.7 und Python3.x:
io.StringIO(u'foo')