2016-07-26 16 views
1

Ich habe eine timerbasierte Anwendung, die alle 8 Stunden eine kurze Zeile in eine Datei schreibt. Die Datei bleibt nicht für die Dauer von 8 Stunden geöffnet, ich öffne sie einfach, schreibe und schließe sie. Wenn es hilft, öffne ich die Datei nur zum Schreiben, nicht anhängen, so dass die vorherigen Daten darin nicht gespeichert werden müssen.Verhindern, dass Anwendung geschlossen wird, wenn eine Datei in Python geöffnet ist

Was passiert, wenn der Benutzer die Anwendung über den Task-Manager schließt, während die Datei zum Schreiben geöffnet ist? Kann ich den Dateischreibvorgang atomar machen? Oder kann ich zumindest verhindern, dass die Anwendung geschlossen wird, wenn die Datei geöffnet ist?

+0

Sie können dies tun: 1) erstellen Sie eine andere Datei, 2) benennen Sie diese andere Datei in die Datei, die Sie überschreiben müssen. Umbenennen ist eine atomare Operation. – Ilya

+0

Wenn der Prozess kurz vor dem Umbenennen beendet wird, würde das nicht eine andere unnötige Datei im Verzeichnis hinterlassen? – devil0150

+0

@ devil0150 Ja, aber wenn die Anwendung erneut geöffnet wird, könnte es eine Überprüfung geben, um die Datei beim Start zu entfernen. Was das Aufgeben einer unnötigen Datei betrifft, wird das passieren. – techydesigner

Antwort

1

Was passiert, wenn der Benutzer die Anwendung über die Task Manager schließt, während die Datei zum Schreiben geöffnet ist?

Wenn Sie keinen Exit-Handler für das Programm haben, wird das Programm höchstwahrscheinlich sofort geschlossen. Wenn der Benutzer das Programm beendet, wird es sofort geschlossen.

Kann ich den Dateischreibvorgang atomar machen?

Ich bin nicht sicher, was Sie unter ‚Atom‘ bedeuten, aber hier ist ein Link, der helfen könnte: atomic writing to file with Python

Oder kann ich zumindest die Anwendung verhindern, schließen, wenn die Datei geöffnet ist?

Sie können nicht verhindern, dass das Programm geschlossen wird, wenn der Benutzer den Prozess beendet.