¿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
atexitmó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 pescarSystemExitde la misma forma.Menciono esto solo para que lo sepas; la forma "correcta" de hacer esto es el
atexitmódulo mencionado anteriormente.fuente