【Python】Enterキーを押したらスクリプトを終了させる(ループを抜ける)
2021.01.30 /
本記事ではPythonスクリプトで「Enterを押したら終了します」といった文言を表示して、Enterキーを押下されたらスクリプトを終了させる方法について解説します。
私はPythonスクリプトをEXEファイル化して、会社のスタッフに配布することがよくあります。
pyinstallerを使用してPythonスクリプトをEXE化する方法に関しては以下記事をご参照ください。
【Python】pyinstallerでpyファイルを配布用にEXE化する方法
EXEファイルを起動するとコンソール画面を表示し、得られた結果をコンソール画面に表示させることができます。
しかしプログラムが終了するとコンソール画面も同時に消えてしまいます。
せっかく表示した結果がすぐに消えてしまう…
プログラムの実行が完了したときに、ウィンドウが勝手に閉じてしまうのを防ぎたい!!
そこで考えたのが、「Enterを押したら終了します」といった文言を表示させて、コンソール画面が消えてしまうのを止めるということでした。
それではプログラムの実行が完了したときに、ウィンドウが勝手に閉じてしまうのを防ぐ方法を見ていきましょう。
きっと他の用途でも使える技術かと思いますので、最後までぜひ読んでください。
Enterキーを押したらプログラムを終了させる方法
Enterキーなどのキーを押したらプログラムを終了させる4つの方法について本記事では解説していきます。
- input()関数
- os.system('PAUSE')
- subprocess.call('PAUSE', shell=True)
- pynput
それではそれぞれの方法を見ていきましょう。
input()関数
プログラムが進むのを止めるためにinput()関数を使用します。
input()関数はユーザーのキーボードからの入力を受け取るための関数です。
ユーザーからのキーボード入力を待つため、プログラムは一旦ストップします。
そのためプログラムの最後にinput()関数を置くことにより、コンソール画面が消えることを防いでくれます。
input()関数の引数に指定した文言がコンソール画面に表示されます。
key = input('Enterキーを押したら終了します')
keyにはキーボードで入力された文字が格納されます。
文字入力がなく、Enterキーのみの場合で判別したい際は以下のようにします。
if get_key == "":
Enterキーが押されたらループを外れるプログラムの場合は以下のように記述します。
while True:
key = input(' Enterキーを押したら終了します')
if not key:
break
os.system('PAUSE')
Python標準モジュールであるosモジュールのsystem()の引数に「PAUSE」を指定してみてください。
これをインタプリタで実行すると以下のような結果になります。
>>> import os
>>> os.system('PAUSE')
続行するには何かキーを押してください . . .
0
os.system('PAUSE')を実行すると「続行するには何かキーを押してください . . .」と表示され、プログラムがストップします。
キーボードでなにか入力すると0が返ってきて、プログラムが終了します。
これではEnter以外のキー入力でもプログラムが終了してしまいますが、コンソール画面が閉じるのを止めるという点でいえば、使える方法だと思います。
ですが現在は同様のことが次項で説明する、subprocessモジュールで実現可能であり、subprocessの使用が推奨されています。
subprocess.call('PAUSE', shell=True)
subprocessモジュールのcall()を使用して、プログラムをストップさせることができます。
subprocess.call('PAUSE', shell=True)
前述のos.system('PAUSE')と同様の結果が得ることができます。
>>> import subprocess
>>> subprocess.call('PAUSE', shell=True)
続行するには何かキーを押してください . . .
0
os.syste()及びsubprocess.call()のより詳しい使い方については以下記事をご参照ください。
【Python】Windowsコマンドプロンプトのコマンドを実行する方法(subprocessモジュール)
pynput
pynputはマウス操作やキーボード操作などのイベントを検知し、その操作内容を取得できるライブラリです。
使い方としてはpynputを使用してListenerを開始します。
そしてEnterを検知したら、Listenerを終了、つまりプログラムを終了させるということが実現できます。
pynputの使用方法については、以下記事をご参照ください。
【Python RPA】マウス・キーボード操作を同時に検知・取得する方法(pynput)
まとめ
本記事「【Python】Enterキーを押したらスクリプトを終了させる(ループを抜ける)」はいかがでしたか。
この記事の一番の目的は、プログラムの実行が完了したときに、ウィンドウが勝手に閉じてしまうのを防ぐ、というところです。
様々なプログラムで応用できる技術だと思いますので、ぜひ使ってみてください。