1. ホーム
  2. python

[解決済み] キー操作でwhileループを終了させるには?

2023-01-18 18:44:07

質問

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ループが終了した後もスクリプトは実行し続ける必要があるので、キーボード割り込みは使いたくありません。

どのように解決するのですか?

最も簡単な方法は、通常の Ctrl-C (SIGINT)を使うことです。

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

以降 Ctrl-C 原因 KeyboardInterrupt が発生した場合、ループの外でそれをキャッチして無視すればよいのです。