Wie erstelle ich ein dateiähnliches Objekt (der gleiche Ententyp wie Datei) mit dem Inhalt einer Zeichenfolge?
82
Verwenden Sie für Python 2.x das StringIO- Modul. Beispielsweise:
>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'
Ich verwende cStringIO (was schneller ist), aber beachte, dass es keine Unicode-Zeichenfolgen akzeptiert, die nicht als einfache ASCII-Zeichenfolgen codiert werden können . (Sie können zu StringIO wechseln, indem Sie "von cStringIO" in "von StringIO" ändern.)
Verwenden Sie für Python 3.x das io
Modul.
f = io.StringIO('foo')
io.StringIO(u'foo')
Ich würde dies verwendenIn Python 3.0:
quelle
with
-Statement- und Schreib-, Druck-, Such- und Lesemethoden.Dies funktioniert für Python2.7 und Python3.x:
quelle
Wenn erwartet wird, dass Ihr dateiähnliches Objekt Bytes enthält, sollte die Zeichenfolge zuerst als Bytes codiert werden, und dann kann stattdessen ein BytesIO- Objekt verwendet werden. In Python 3:
quelle
Zwei gute Antworten. Ich möchte einen kleinen Trick hinzufügen: Wenn Sie ein echtes Dateiobjekt benötigen (einige Methoden erwarten eines, nicht nur eine Schnittstelle), können Sie hier einen Adapter erstellen:
quelle