我正在尝试使用Python和curses进行一些实验。
当我运行
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()
如果我一直等到程序执行结束,curses.endwin()
将被调用,那么一切都能顺利进行。然而,如果我使用 Ctrl-C 来提前结束程序,curses.endwin()
就永远不会得到调用,这会破坏我的终端会话。
如何正确应对这种情况?我怎样才能确保无论我如何试图结束/中断程序(例如Ctrl-C,Ctrl-Z),它都不会破坏终端?
atexit
真的比finally
更健壮吗? - asmeurerfinally
版本要求你保证所有程序代码都在try
块内。在多线程环境中,这并不一定成立。 - Amber