Voglio eseguire un'attività quando termina il mio programma Python, ma solo se termina correttamente. Per quanto ne so, l'uso del modulo atexit significa che la mia funzione registrata sarà sempre in esecuzione, a prescindere dal successo. Esiste una funzionalità simile per registrare una funzione in modo che venga eseguita solo in caso di esito positivo? In alternativa, c'è un modo per la mia funzione di uscita per rilevare se l'uscita era normale o eccezionale?Come posso registrare una funzione da chiamare solo su * esito positivo * dell'uscita del mio programma Python?
Ecco un codice che dimostra il problema. Stamperà che il programma è riuscito, anche quando ha fallito.
import atexit
def myexitfunc():
print "Program succeeded!"
atexit.register(myexitfunc)
raise Exception("Program failed!")
uscita:
$ python atexittest.py
Traceback (most recent call last):
File "atexittest.py", line 8, in <module>
raise Exception("Program failed!")
Exception: Program failed!
Program succeeded!
Questo è probabilmente il modo più semplice per ottenere ciò che ho chiesto. –