Programación

Llamar a función en interrupción de programa en Python

Nekmo

Jul. 1, 2016

python módulos

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!."