Pythonでループ処理中にキーボード入力(Ctrl+C)で抜けられるようにする

適当にやるとターミナルを落とすしかなくなる

まずはこのコード

をエラーがあっても続けるようにします(KeyboardInterruptで止まりづらい例)

この書き方だとCtrl+Cで強制終了させようとしても、sleep分を飛ばすだけで残りの回数分Ctrl+Cを押す必要があります

仮に、range[10]と指定せずwhile True等無限ループを指定していた場合は停止させられません

繰り返し処理を実行中に[KeyboardInterrupt]という例外が発生して、except処理をしていないとエラーで停止するのですが、

上記の書き方だと繰り返し一つ一つに対してpassが発生するのでループ自体を抜けられません

抜けられる書き方1

この書き方だと1度のCtrl+Cで抜けられる
forの時にはforの一つ一つに対してCtrl+Cが効いていたようですが
こっちはあくまでmain()自体を飛ばすようになります

抜けられる書き方2

ループ処理を抜けたいので抜ける命令[break]を書きます

おまけ Ctrl+C(KeyboardInterrupt)をキャッチする

except:  →  except KeyboardInterrupt:

自分の意志で停止した時に理由表示をわかりやすく出したい

通常のエラーを無視するが、キーボード入力での停止は受け付ける

以上です

シェアする

  • このエントリーをはてなブックマークに追加

フォローする