Frage

Ich habe eine Datei zum Schreiben geöffnet und ein Verfahren zum Tagen läuft - etwas in die Datei in relativ zufälligen Momenten geschrieben. Mein Verständnis ist - bis ich file.close () - gibt es eine Chance, nichts ist wirklich auf der Festplatte gespeichert. Ist das wahr?

Was passiert, wenn das System abstürzt, wenn der Hauptprozess noch nicht abgeschlossen ist? Gibt es eine Möglichkeit Art zu begehen einmal ... sagen wir - 10 Minuten (und nenne ich mich verpflichten - keine Notwendigkeit, Timer zu laufen)? Ist file.close () und offen (Datei, 'a') ist der einzige Weg, oder gibt es bessere Alternativen?

War es hilfreich?

Lösung

Sie sollten in der Lage sein file.flush() zu verwenden, um dies zu tun.

Andere Tipps

Wenn Sie den aktuellen Prozess töten nicht wollen f.flush() hinzuzufügen (es klingt wie es bereits seit einigen Tagen laufen ist schon?), Sollten Sie in Ordnung sein. Wenn Sie die Datei sehen Sie schreiben immer größer, werden Sie nicht, dass die Daten verloren gehen ...

Von Python-Dokumentation:

  

write (str)       Schreiben Sie eine Zeichenfolge in die Datei. Es gibt keinen Rückgabewert. Durch Pufferung,   die Zeichenfolge kann zeigen sich nicht tatsächlich in   die Datei, bis die flush () oder close ()   Methode aufgerufen wird.

Es klingt wie Python Puffersystem automatisch bündig Dateiobjekte, aber es ist nicht garantiert, wenn das passiert.

Um sicherzustellen, dass Sie Daten auf die Platte geschrieben wird, verwenden file.flush() von os.fsync(file.fileno()) gefolgt.

Wie bereits die .flush () -Methode verwenden zu zwingen, die Schreib aus dem Puffer ausgeführt, aber vermeiden Sie eine Menge Anrufe verwenden zu spülen, da dies tatsächlich Ihr Schreiben verlangsamen kann (wenn die Anwendung auf Fast-Writes beruht) wie Sie Ihre Dateisystem Änderungen schreiben werden gezwungen werden, die als kleiner sind, ist Puffergröße, die Sie auf die Knie bringen. :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top