Estoy jugando un poco con Python y maldiciones.Python maldice el dilema
Cuando corro
import time
import curses
def main():
curses.initscr()
curses.cbreak()
for i in range(3):
time.sleep(1)
curses.flash()
pass
print("Hello World")
curses.endwin()
if __name__ == '__main__':
main()
si espero hasta el final, curses.endwin()
es llamado así que todo funciona bien. Sin embargo, si lo corto con Ctrl-C, nunca se llama a curses.endwin()
, así que daña la sesión de mi terminal.
¿Cuál es la forma correcta de manejar esta situación? ¿Cómo puedo asegurarme de que no importa cómo intente finalizar/interrumpir el programa (por ejemplo, Ctrl-C, Ctrl-Z), no dañe la terminal?
es 'atexit' realmente más robusto que' finally'? – asmeurer
@asmeurer Es más una cuestión de la versión 'finalmente' requiere que garantices que todo tu código de programa está dentro del bloque 'try'. En, digamos, un entorno multiproceso, ese no es necesariamente el caso. – Amber