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?

War es hilfreich?

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
scroll top