Python Pendant zu VBA "Woorkbook before close event"

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bitterlin
User
Beiträge: 4
Registriert: Samstag 18. April 2020, 19:01

Liebe Freunde

Ich habe in der Vergangenheit vor allem mit VBA in Excel programmiert um meine Datenprobleme zu lösen.

Seit kurzem, bin ich auf den Geschmack von Python gekommen, und kann bereits viele persönliche Bedürfnisse über Python abdecken und habe wirklich Spaß an der Sache.

Leider komme ich in einem Punkt nicht weiter, wobei alles Googlen und Suchen in der Dokumentation erfolglos scheint und hoffe auf eure Hilfe.

In VBA gibt es den "Workbook_BeforeClose" Event und genau so eine Anweisung suche ich für Python.

Ich möchte, dass mein Programm beim Beenden, eine Funktion ausführt
( in meinem Fall macht es ein kleines Backup von zwei Dokumente die kopiert und in einen anderen Ordner geschrieben werden mit einem variablen Speichernamen)
Ich hänge den Code hier jetzt nicht an weil die Funktion funktioniert ja und stellt kein Problem dar.

Ich möchte nun aber erreichen, dass die Funktion nicht beim Start des Programmes im ersten Durchlauf ausgeführt wird sondern erst "nach getaner Arbeit" und zwar unabhängig ob er auf den quit - Button drückt oder sonst irgendwie das Programm beendet.

Schlussendlich ist es ja eigentlich ganz egal welche Routine ausgeführt wird, ich suche nach einem Befehl der eine Routine vor dem Beenden ausführen wird, aber eben nur dann.

Es scheint eine ganz einfache Frage zu sein, aber ich bin ratlos ???

Gibt es so etwas überhaupt in Python ?
2B || !2B
Benutzeravatar
__blackjack__
User
Beiträge: 13071
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@bitterlin: Was ist denn hier der Quit-Button? Es fehlt irgendwie die Information wie Dein Programm auf die Exceltabelle zugreift.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

Zur Signatur: || gibt es in Python nicht, das ist `or` ebensowenig gibt es `!`, das ist `not`: 0x2b or not 0x2b ergibt 0x2b weil der erste Wert schon ungleich 0 ist. Normalerweise möchte man hier bitweise Operationen benutzten, also 0x2b | ~0x2b, die es so auch in vielen anderen Programmiersprachen gibt, das Ergebnis ist -1.
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

Wenn ich das richtig verstehe zielt die Frage nicht auf Excel/VBA ab, sondern die genannte Funktion diente nur zur Darstellung der hier gewünschten Funktionalität.
Ich schätze du suchst sowas wie: https://docs.python.org/3/library/atexit.html
bitterlin
User
Beiträge: 4
Registriert: Samstag 18. April 2020, 19:01

@ einfach Tobi
einfachTobi hat geschrieben: Mittwoch 8. Juli 2020, 13:40 Wenn ich das richtig verstehe zielt die Frage nicht auf Excel/VBA ab, sondern die genannte Funktion diente nur zur Darstellung der hier gewünschten Funktionalität.
Ich schätze du suchst sowas wie: https://docs.python.org/3/library/atexit.html
Genau, das ist die Lösung für mein Problem, "vielen Dank".
Ich habe beim Googeln mich so sehr auf Suchbegriffe aus dem Visual Basic konzentriert, weil ich es nicht anderst beschreiben hätte können.
Freut mich sehr, dass ich durch euch da weiter kommen konnte.

Das war übrigens mein Erster "Beitrag", wenn man eine Frage als Beitrag bezeichnen darf.

@Sirius3
Ist mir schon bewusst, das mein Spruch "to be or not to be" nichts mit Python zu tun hat :lol: aber auf die Schnelle viel mir nichts lustiges in Python Style ein.
Ich bin noch kein Insider, aber dafür bin ich ja schließlich hier bei euch, um eine für mich neue Sprache zu lernen.

@__blackjack__
Wie es Tobi, richtig erkannt hat, spielt es mir keine Rolle ob das jetzt irgend ein quit Button oder irgend sonst ein Ausstieg aus dem Programm ist, der stattfindet,
aber ich danke euch allen für die Antworten und freue mich die Lösung nun zu wissen, resp gefunden zu haben.
2B || !2B
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@bitterlin: atexit braucht man eigentlich selten bis nie, weil es fast immer einen definierten Punkt gibt, an dem das Programm vorbeikommen muß, und sei es ein finally-Block.
Wenn Du Dein Problem konkreter machen würdest und Code zeigen würdest, könnte man Dir besser helfen.
Antworten