Frage

Wie kann ich eine Datei-ähnliche Objekt (gleiche Ente Typ als Datei) mit dem Inhalt einer Zeichenfolge erstellen?

War es hilfreich?

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')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top