プログラムが終了する前に実行される関数または何かをどのように持つことができますか?バックグラウンドで常に実行されるスクリプトがあり、終了する前にファイルにデータを保存する必要があります。これを行う標準的な方法はありますか?
atexit
モジュールを確認してください。
http://docs.python.org/library/atexit.html
たとえば、アプリケーションの終了時にメッセージを印刷したい場合:
import atexit
def exit_handler():
print 'My application is ending!'
atexit.register(exit_handler)
これは、スクリプトの通常の終了には最適ですが、すべての場合に呼び出されるわけではないことに注意してください(致命的な内部エラーなど)。
エラーがあっても常に実行したい場合は、try:finally:like this-を使用します。
def main():
try:
execute_app()
finally:
handle_cleanup()
if __name__=='__main__':
main()
例外も処理したい場合は、最終的に:の前にexcept:を挿入できます。
KeyboardInterrupt
を上げることによって(たとえば、Ctrl-Cを押すことによって)スクリプトを停止した場合、標準の例外としてそれをキャッチできます。同じ方法でSystemExit
をキャッチすることもできます。
try:
...
except KeyboardInterrupt:
# clean up
raise
あなたがそれについて知っているように、私はこれに言及します。これを行う「正しい」方法は、上記のatexit
モジュールです。