首页 文章

在程序退出之前做某事

提问于
浏览
64

如何在程序退出之前执行某项功能或某些功能?我有一个将在后台持续运行的脚本,我需要它在退出之前将一些数据保存到文件中 . 有这样做的标准方法吗?

3 回答

  • 103

    查看 atexit 模块:

    http://docs.python.org/library/atexit.html

    例如,如果我想在应用程序终止时打印消息:

    import atexit
    
    def exit_handler():
        print 'My application is ending!'
    
    atexit.register(exit_handler)
    

    请注意,这对于脚本的正常终止非常有用,但在所有情况下都不会被调用(例如,致命的内部错误) .

  • 21

    如果你想要总是运行一些东西,即使是错误,请使用try:finally:喜欢这个 -

    def main():
        try:
            execute_app()
        finally:
            handle_cleanup()
    
    if __name__=='__main__':
        main()
    

    如果你还想处理异常,可以在finally之前插入一个except:

  • 11

    如果通过引发 KeyboardInterrupt 来停止脚本(例如按Ctrl-C),则可以将其作为标准异常捕获 . 你也可以用同样的方式捕捉 SystemExit .

    try:
        ...
    except KeyboardInterrupt:
        # clean up
        raise
    

    我提到这只是为了让你了解它; 'right'这样做的方法是上面提到的 atexit 模块 .

相关问题