Was ist der beste Weg, den Inhalt eines StringIO in eine Datei zu schreiben?
Frage
Was ist der beste Weg, den Inhalt eines zu schreiben? StringIO
Puffer in eine Datei?
Ich mache derzeit so etwas wie:
buf = StringIO()
fd = open ('file.xml', 'w')
# populate buf
fd.write (buf.getvalue ())
Aber dann buf.getvalue ()
Würde ich eine Kopie des Inhalts anfertigen?
Lösung
Verwenden Shutil.copyfileobj:
with open ('file.xml', 'w') as fd:
buf.seek (0)
shutil.copyfileobj (buf, fd)
oder shutil.copyfileobj (buf, fd, -1)
zum Kopieren aus einem Dateiobjekt, ohne Blöcke begrenzter Größe zu verwenden (wird verwendet, um unkontrollierten Speicherverbrauch zu vermeiden).
Andere Tipps
Python 3:
from io import StringIO
...
with open('file.xml', mode='w') as f:
print(buf.getvalue(), file=f)
Python 2.x:
from StringIO import StringIO
...
with open('file.xml', mode='w') as f:
f.write(buf.getvalue())
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow