Pythonのプログラムを途中で終了させるsys.exit()
Pythonのプログラムを途中で終了させるにはsys.exit()を使う。
REPL(対話モード)を終了させる組み込み関数exit()とquit()、また、無限ループに陥ってしまった場合などにターミナルやコマンドプロンプトから実行中のプログラムを強制終了させるショートカットキーCtrl + Cについても説明する。
プログラムを途中終了: sys.exit()
基本的な使い方
Pythonプログラムはsys.exit()が呼び出された時点で終了する。
sys.exit()以降の行は実行されない。
import sys
print('Start')
sys.exit()
print('Finish')
$ python sys_exit.py
Start
if文を使えば、特定の条件を満たすときに終了させることが可能。
import sys
a = 100
print('Start')
if a == 0:
sys.exit()
print('Continue')
if a == 100:
sys.exit()
print('Finish')
$ python sys_exit_if.py
Start
Continue
引数で終了ステータス・エラーメッセージを指定
sys.exit()の引数には終了ステータスを指定できる。
とりあえずプログラムを終了させたいだけならデフォルト(引数省略)で問題ないが、異常終了として扱いたい場合は引数を指定する。
デフォルトは0で正常終了として扱われ、0以外の整数値は異常終了として扱われる。
整数以外の型のオブジェクトを指定した場合、そのオブジェクトが標準エラー出力(stderr)に出力される。このときの終了ステータスは1。
文字列を指定すると、エラーメッセージを出力できる。
import sys
sys.exit('Error message')
$ python sys_exit_stderr.py
Error message
以下のように、標準出力(stdout)と標準エラー出力(stderr)をそれぞれ別のファイルにリダイレクトすると、stderrとして出力されることが確認できる。
$ python sys_exit_stderr.py 1> data/temp/stdout.txt 2> data/temp/stderr.txt
stdout.txtは空、stderr.txtにはError messageが出力される。
$ cat data/temp/stdout.txt
$ cat data/temp/stderr.txt
Error message
上の例のcatはファイルの中身を表示するUNIXのコマンド。Windowsではtypeを使う。
SystemExit例外
sys.exit()はSystemExit例外を送出する。
try節にsys.exit()が含まれるとき、except節で例外指定を省略(bare except)するとSystemExitも捕捉(キャッチ)されてしまい、プログラムが終了しないので注意。
import sys
print('Start')
try:
sys.exit()
except:
print('Catch all exceptions')
print('Finish')
$ python sys_exit_systemexit.py
Start
Catch all exceptions
Finish
基底クラスExceptionや想定される例外を明示的に指定する必要がある。例外処理についての詳細は以下の記事を参照。
REPL(対話モード)を終了: exit(), quit()
PythonのREPL(対話モード)を終了するには、組み込み関数exit()またはquit()を使う。
$ python
Python 3.12.4 (main, Jun 6 2024, 18:26:44) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
exit()とquit()はREPL(対話モード)で使うものであり、Pythonプログラム(.py)内では使わない。
なお、カッコを省略したexitやquitを実行したときに表示されるように、Ctrl + Dでも終了できる。
$ python
Python 3.12.4 (main, Jun 6 2024, 18:26:44) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> ^D
実行中のプログラムを強制終了: Ctrl + C
ターミナルやコマンドプロンプトで実行中のプログラムを強制終了させるにはショートカットキーCtrl + Cを使う。
例えば、実行したPythonプログラムが無限ループに陥ってしまったときなどに有効。
ターミナルやコマンドプロンプト上でCtrl + Cを押せば、実行中のプログラムを強制終了できる。