Seite 1 von 1

Autostart unter Windows

Verfasst: Montag 1. September 2014, 23:23
von pixewakb
Hi, ich habe ein Skript, das im Autostart-Ordner unter Windows verlinkt ist und dort in einer Dauerschleife ein Problem bearbeitet, d. h. in einem Zeitintervall (einmal pro Tag) eine Mail schreibt und versendet. Ich hätte gern, dass das Skript sich in eine Logdatei einträgt.

Kann ich bei so etwas mit try, except, finally arbeiten? Das Skript funktioniert, läuft, aber ich sehe es nicht über den Taskmanager und da es eine pyw-Datei ist, gibt es für mich nach dem Start keinen Zugriff mehr auf das Tool (will ich eigentlich auch so).

Meine Überlegung: Wird try, except und vor allem finally auch abgearbeitet, wenn ich den Rechner runterfahre oder wird das Skript nur abgeschossen. Im Kern hätte ich gern, dass es sich bei finally in einer Logdatei "austrägt", d. h. Eintrag dort "Wurde beendet".

Damit zusammenhängend: Wahrscheinlich werde ich 2 oder mehr Skripte im Autostart-Ordner platzieren, die später automatisch im Hintergrund laufen und bei Eintritt einer bestimmten Situation bestimmte Aufgaben abarbeiten. Kann ich die alle mittels

Code: Alles auswählen

with open("Logdatei 2014-09-02.txt","a") as f: ...
In eine Datei schreiben lassen oder wird es da Schreibkonflikte geben!? Würde die eigentlich erwarten, d. h. ich müsste wohl mehr Logfiles anlegen, d. h. eines pro Skript...??? Konnte es und habe es noch nicht getestet.

Kurze Antworten würden mir schon genügen. Aktuell arbeite ich an einigen Sachen, das Gesamtprojekt ist erstmals etwas größer und komplexer als das noch in der Einführung abgedeckt war... Ganz herzlichen Dank!

Re: Autostart unter Windows

Verfasst: Dienstag 2. September 2014, 07:02
von Sirius3
@pixewakb: Windows sendet ein Shutdown-Event, das Du halt abfangen mußt. Ich glaube nicht, dass das automatisch in eine SystemExit-Exception umgewandelt wird, aber Du kannst das ja auch einfach ausprobieren.
Die Schreibzugriffe unter Windows sind atomar, das heißt, dass zwei write-Aufrufe (solche, die direkt den Systemaufruf ausführen, also ohne zwischengeschaltete Puffer von Python) sich nicht überschneiden.