Python3で終了時に処理を行う方法

f:id:sakage24:20170628200017p:plain

終了時に処理を挟みたい時ってありますよね。例えばデータをテキストファイルに保存してから終わらせたい時とか…そんな時に使えるテクニックを記事にしてみます。

終了処理の挟み方

やり方は簡単です。例外のKeyboardInterruptをexcept句で受け取ればよいのです。実際に行いたい処理をfinally句に記述します。

ソースコードはこちらです。


import time
handler = ""
try:
handler = open("hoge.txt", 'wt', encoding='utf-8')
while True:
# 処理実行中...
time.sleep(1)
except KeyboardInterrupt:
# ctrl + cを検知
print("ctrl + cが押されました。")
handler.write("ctrl + cが押されました。")
finally:
# 終了処理
input("終了処理が行われました。")
handler.write("終了処理が行われました。")
handler.close()

意外と簡単ですね。ただ、このやり方だと対応しているのはctrl + cが押された時だけです。×ボタンやシャットダウン、再起動などの処理には対応していませんので、注意して下さい。
*1

終わり

以上です。とっても短い…

画像収集プログラム2ちゃんねる☆すくれいぱーを公開しています。ダウンロードしてみて下さい。

*1:win32apiを用いると出来るようです。なんとかドキュメントは見つけたので、やり方が分かったら教えてくださいw

コメントを残す

メールアドレスが公開されることはありません。