Comment pouvez-vous avoir une fonction ou quelque chose qui sera exécutée avant la fermeture de votre programme? J'ai un script qui s'exécutera constamment en arrière-plan et j'en ai besoin pour enregistrer des données dans un fichier avant qu'il ne se termine. Existe-t-il une manière standard de procéder?
Découvrez le module atexit
:
http://docs.python.org/library/atexit.html
Par exemple, si je voulais imprimer un message à la fin de ma candidature:
import atexit
def exit_handler():
print 'My application is ending!'
atexit.register(exit_handler)
Sachez simplement que cela fonctionne très bien pour la terminaison normale du script, mais il ne sera pas appelé dans tous les cas (par exemple, des erreurs internes fatales).
Si vous voulez que quelque chose s'exécute toujours, même en cas d'erreur, utilisez try: finally: comme ceci -
def main():
try:
execute_app()
finally:
handle_cleanup()
if __name__=='__main__':
main()
Si vous souhaitez également gérer les exceptions, vous pouvez insérer un exception: avant le finalement:
Si vous arrêtez le script en augmentant un KeyboardInterrupt
(par exemple en appuyant sur Ctrl-C), vous pouvez intercepter cela comme une exception standard. Vous pouvez également attraper SystemExit
de la même manière.
try:
...
except KeyboardInterrupt:
# clean up
raise
Je le mentionne juste pour que vous le sachiez; la "bonne" façon de procéder est le module atexit
mentionné ci-dessus.