¿Cómo se 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 se cierre. ¿Hay una forma estándar de hacer esto?Hacer algo antes de la salida del programa
Respuesta
Salida del módulo atexit
:
http://docs.python.org/library/atexit.html
Por ejemplo, si quería imprimir un mensaje cuando mi solicitud fue terminando:
import atexit
def exit_handler():
print 'My application is ending!'
atexit.register(exit_handler)
Sólo ten en cuenta que esto funciona muy bien para terminación normal de la secuencia de comandos, pero no se llamará en todos los casos (por ejemplo, errores internos fatales).
¿Hay alguna manera de hacer que sea llamado si presiona Ctrl + C o Ctrl + \? – RacecaR
Se llamará si presiona Ctrl + C. Eso simplemente genera una excepción KeyboardInterrupt. –
Oh, lo olvidé. Y supongo que nada de lo que puedas hacer se ejecutará si alguien mata el proceso de Python ¿verdad? – RacecaR
Si detiene la secuencia de comandos levantando un KeyboardInterrupt
(por ejemplo, presionando Ctrl-C), puede ver 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 sepa; la forma "correcta" de hacerlo es el módulo atexit
mencionado anteriormente.
Si quieres que algo se ejecute siempre, incluso en los errores, try de uso: por último: como esto -
def main():
try:
execute_app()
finally:
handle_cleanup()
if __name__=='__main__':
main()
Si desea manejar también excepciones que puede insertar una excepción: antes del fin:
No funciona cuando se produce SIGTERM debido a la muerte del proceso. – ramu
- 1. ¿Cómo ejecutar el código antes de la salida del programa?
- 2. C: Hacer algo cuando el programa sale
- 3. ¿Cómo hacer algo antes en el envío?
- 4. La salida del programa C es confusa
- 5. Obtener el estado de retorno Y la salida del programa
- 6. Salida de color del programa ejecutado bajo BASH
- 7. Script Bash para probar automáticamente la salida del programa - C
- 8. ¿Cómo canalizar la salida del programa en un editor?
- 9. ¿Puedo ver la salida del programa en Qt-Creator?
- 10. Haga algo javascript antes de asp.net anypostback
- 11. ¿Cómo puedo hacer que Visual Studio se rompa justo antes de que se detenga el programa?
- 12. ¿Algo que deba saber antes de convertir un gran programa en C++ de VS2005 a VS2008?
- 13. Espere System.Threading.Timer Callbacks para completar antes de salir del programa
- 14. ¿Se necesita realmente la liberación de objetos en la salida del programa?
- 15. salida inesperada del programa BubbleSort con MSVC vs TCC
- 16. Python timeit y salida de programa
- 17. La redirección de salida no funciona para un determinado programa
- 18. does minHeight ¿hacer algo?
- 19. PHP: obtener una salida antes de la escritura ha terminado
- 20. htmlentities PHP() en la entrada antes de insertar DB, en lugar de en la salida
- 21. Obligar a la salida estándar de otro programa mediante Python
- 22. Programa Primer Certamen de Java salida incorrecta
- 23. Explicación de salida de un programa java
- 24. Problema al redireccionar una salida del programa C en bash
- 25. ¿Cuál es la mejor manera de hacer caché de salida del lado del servidor en PHP?
- 26. Obtenga la salida de un programa C en una variable en otro programa C
- 27. ¿Puedo redirigir la salida de un programa a gvim?
- 28. Ejecute un programa de Emacs y no espere la salida
- 29. Ordenando std :: map por valor antes de la salida & destroy
- 30. Eclipse CDT La consola de depuración no muestra la salida del programa
¿Cómo se detiene el script? – phimuemue
El script no debe detenerse nunca, pero tal vez alguien mate el proceso o presione Ctrl + \ o algo. – RacecaR