¿Cómo puede tener una función o algo que se ejecutará antes de que se cierre el programa? Tengo un script que se ejecutará constantemente en segundo plano y lo necesito para guardar algunos datos en un archivo antes de que salga. ¿Existe una forma estándar de hacer esto?
100
Respuestas:
Mira el
atexit
módulo:http://docs.python.org/library/atexit.html
Por ejemplo, si quisiera imprimir un mensaje cuando mi aplicación estaba terminando:
Solo tenga en cuenta que esto funciona muy bien para la terminación normal del script, pero no se llamará en todos los casos (por ejemplo, errores internos fatales).
fuente
Note The exit function is not called when the program is killed by a signal, when a Python fatal internal error is detected, or when os._exit() is called
.Si desea que algo se ejecute siempre, incluso con errores, use
try: finally:
así:Si también desea manejar excepciones, puede insertar un
except:
antes delfinally:
fuente
Si detiene el script levantando un
KeyboardInterrupt
(por ejemplo, presionando Ctrl-C), puede detectarlo como una excepción estándar. También puedes pescarSystemExit
de la misma forma.Menciono esto solo para que lo sepas; la forma "correcta" de hacer esto es el
atexit
módulo mencionado anteriormente.fuente