python - finish - Hacer algo antes de la salida del programa
python terminate app (3)
¿Cómo puede tener una función o algo que se ejecutará antes de que se cierre su programa? Tengo un script que se ejecutará constantemente en segundo plano, y lo necesito para guardar algunos datos en un archivo antes de que se cierre. ¿Hay una forma estándar de hacer esto?
Si desea que algo se ejecute siempre, incluso en los errores, use try: finally: like this -
def main():
try:
execute_app()
finally:
handle_cleanup()
if __name__==''__main__'':
main()
Si también desea manejar excepciones, puede insertar una excepción: before the finally:
Si detiene la secuencia de comandos mediante la elevación de una interrupción del KeyboardInterrupt
(por ejemplo, presionando Ctrl-C), puede captar eso solo como una excepción estándar. También puede capturar SystemExit
de la misma manera.
try:
...
except KeyboardInterrupt:
# clean up
raise
Menciono esto solo para que lo sepas; la forma "correcta" de hacerlo es el módulo atexit
mencionado anteriormente.
Mira el módulo atexit
:
http://docs.python.org/library/atexit.html
Por ejemplo, si quería imprimir un mensaje cuando mi aplicación estaba terminando:
import atexit
def exit_handler():
print ''My application is ending!''
atexit.register(exit_handler)
Solo tenga en cuenta que esto funciona muy bien para la finalización normal del script, pero no se llamará en todos los casos (por ejemplo, errores internos fatales).