Llamar a función en interrupción de programa en Python
Será verdad eso de que Python "viene con pilas incluidas". Nunca pensé que hubiese un módulo para ejecutar funciones cuando el programa se interrumpe. ¡Pero lo hay!
El módulo en cuestión se llama atexit
y lo he llegado a usar para borrar los directorios temporales que he creado durante la ejecución del programa.
import atexit
temp_directories = []
...
def clean():
import shutil
[shutil.rmtree(d) for d in temp_directories]
atexit.register(clean)
Tal y como se puede leer en la documentación, también lo podemos usar pasándole argumentos posicionales y parámetros.
import atexit
def goodbye(name, message='Goodbye, {}!'):
print(message.format(name))
atexit.register(goodbye, 'Nekmo', '¡Adiós, {}!')
O usarlo como un decorador.
import atexit
@atexit.register
def goodbye():
print "Hasta la vista!."
Github Twitter Google+ Youtube Email