キーストロークでwhileループを強制終了するにはどうすればいいですか? 質問する

キーストロークでwhileループを強制終了するにはどうすればいいですか? 質問する

while ループを使用してシリアル データを読み取り、csv ファイルに書き込んでいます。十分なデータが収集されたとユーザーが感じたら、while ループを終了できるようにしたいと考えています。

while True:
    #do a bunch of serial stuff

    #if the user presses the 'esc' or 'return' key:
        break

私は opencv を使用してこれと似たようなことを実行しましたが、このアプリケーションでは動作していないようです (とにかく、この機能のためだけに opencv をインポートしたくありません)...

        # Listen for ESC or ENTER key
        c = cv.WaitKey(7) % 0x100
        if c == 27 or c == 10:
            break

では、どうすればユーザーがループから抜け出せるようになるのでしょうか?

また、while ループが終了した後もスクリプトの実行を継続する必要があるため、キーボード割り込みは使用したくありません。

ベストアンサー1

最も簡単な方法は、通常のCtrl-C(SIGINT) で中断することです。

try:
    while True:
        do_something()
except KeyboardInterrupt:
    pass

Ctrl-C発生する原因となるのでKeyboardInterrupt、ループの外でそれをキャッチして無視します。

おすすめ記事