2010-08-04 23 views
5

Ich verwende xlwt in Python, um eine Excel-Tabelle zu erstellen. Sie können dies für fast alles andere, das eine Datei generiert, austauschen; es ist, was ich mit der Datei machen möchte, die wichtig ist.Speichern einer temporären Datei

from xlwt import * 

w = Workbook() 
#... do something 
w.save('filename.xls') 

Ich möchte ich zwei Anwendungsfälle für die Datei haben: Ich kann es streamen den Browser des Benutzers an oder lege ich es an eine E-Mail. In beiden Fällen muss die Datei nur die Dauer der Webanforderung aufweisen, die sie generiert.

Was ich bin, ist der Grund für das Starten dieses Threads speichern in eine echte Datei auf dem Dateisystem hat seine eigenen Hürden (Stop Überschreiben, Bereinigen der Datei einmal getan). Kann ich es irgendwo "speichern", wo es nur in Erinnerung bleibt und nur für die Dauer der Anfrage?

Antwort

5

cStringIO

(oder mmap wenn es wandelbar sein soll)

+0

Große Sachen verwenden. Ich hatte über so etwas nachgedacht, nahm aber (fälschlicherweise) an, dass xlwt nur einen Dateinamen und kein Objekt annehmen würde. – Oli

+0

Polymorphismus ftw! – katrielalex

+0

Hmmm ... Wenn Sie das resultierende Dateibild mutieren, melden Sie bitte keine Probleme beim Lesen. –

1

die Antwort Verallgemeinerung, wie Sie vorgeschlagen: Wenn das „irgendetwas anderes, das eine Datei erzeugt“ wird keine Datei-ähnliche Objekt akzeptieren als Sowie ein Dateipfad, dann können Sie den Aufwand reduzieren, indem Sie tempfile.NamedTemporaryFile

Verwandte Themen