Möglicherweise möchten Sie eine verwenden, tempfile.SpooledTemporaryFile
die Ihnen das Beste aus beiden Welten bietet, da zunächst eine temporäre speicherbasierte virtuelle Datei erstellt wird, automatisch jedoch zu einer physischen festplattenbasierten Datei gewechselt wird, wenn die im Speicher gespeicherten Daten einen bestimmten Wert überschreiten Größe.
Eine weitere nette Funktion ist, dass (bei Verwendung des Speichers) automatisch entweder ein io.BytesIO
oder io.StringIO
je nach verwendetem Speicher mode
verwendet wird, sodass Sie entweder Unicode-Zeichenfolgen oder Binärdaten (Bytes) lesen und schreiben können.
Der einzige schwierige Teil könnte die Tatsache sein, dass Sie das Schließen der Datei zwischen den Schritten vermeiden müssen, da dies dazu führen würde, dass sie aus dem Speicher oder der Festplatte gelöscht wird. Stattdessen können Sie es einfach mit einem Dateimethodenaufruf zum Anfang zurückspulen seek(0)
.
Wenn Sie mit der Datei fertig sind und sie schließen, wird sie automatisch von der Festplatte gelöscht, wenn die darin enthaltene Datenmenge dazu führte, dass sie auf eine physische Datei übertragen wurde.