在程序退出之前做些事情
你怎么能有一个函数或什么东西,将在程序退出之前执行? 我有一个将在后台不断运行的脚本,我需要它在退出之前将一些数据保存到文件中。 有没有这样做的标准方式?
看看atexit
模块:
http://docs.python.org/library/atexit.html
例如,如果我想在应用程序终止时打印一条消息:
import atexit def exit_handler(): print 'My application is ending!' atexit.register(exit_handler)
只要意识到这对于脚本的正常终止非常有效,但是在所有情况下都不会被调用(例如致命的内部错误)。
如果你想要某些东西总是运行,即使在错误,使用try:finally:像这样 –
def main(): try: execute_app() finally: handle_cleanup() if __name__=='__main__': main()
如果你还想处理exception,你可以插入一个except:finally:
如果您通过提高KeyboardInterrupt
(例如按下Ctrl-C)来停止脚本,则可以将其作为标准exception来捕获。 您也可以用相同的方法捕获SystemExit
。
try: ... except KeyboardInterrupt: # clean up raise
我提到这个只是为了让你知道; 正确的做法是上面提到的atexit
模块。