2017-05-20 6 views
1

J'ai créé un journal et je veux qu'il soit mis à jour à la fin du script python. Cela aidera à garder une trace de toutes les terminaisons énergiques. J'ai essayé, mais atexit() fonctionne seulement sur la terminaison normale.Exécuter une fonction à la fin du script en Python

+0

Comment le script se termine-t-il? Le clavier ou est-il tué par autre chose? –

+0

Oui, le clavier fera l'arrêt. –

Répondre

1

Il suffit d'intercepter l'exception KeyboardInterrupt.

Ce programme montre comment une fonction peut être exécutée lorsque la Ctrl +C combinaison de touches pour quitter.

def main(): 
    while True: 
     input('') 

def onexit(): 
    print('on exit') 

try: 
    main() 
except KeyboardInterrupt: 
    onexit() 
+0

Qu'en est-il de Ctrl + Z? –

+0

Ce n'est pas une fin, mais c'est le cas. C'est la base du processus. Voir https://superuser.com/questions/476873/what-is-effect-of-ctrl-z-on-a-unix-linux-application/476874 –

+0

Ceci ne fonctionnera pas pour les autres signaux (non-clavier) pour terminaison (par exemple, le tuer de force avec 'kill -SIGTERM'). L'utilisation du module 'signal' et l'écoute de tous les signaux de 'terminaison' constituent une solution plus globale. – zwer