在程序退出之前做些事情

你怎么能有一个函数或什么东西,将在程序退出之前执行? 我有一个将在后台不断运行的脚本,我需要它在退出之前将一些数据保存到文件中。 有没有这样做的标准方式?

看看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模块。