HOWTO · Python

Python でプログラムを終了させる方法

Python では、quit()、exit()、sys.exit()、os.exit()など多くの組み込み関数を使って Python プログラムを終了させています。

このページの内容

PHP と同様に、die() コマンドは実行中のスクリプトを終了させます。同様に、quit()exit()sys.exit()os.exit() などの組み込み関数を用いて Python スクリプトを終了させることができます。Python は命令を上から順に実行し、基準に従ってコードに定義されたループを実行しますが、Python インタプリタはファイル EOF の最後に到達すると、それ以上の命令を読み込めなくなるため、実行を終了します。

この記事では、Python でプログラムを終了させる方法を紹介します。

Python のプログラムを quit() メソッドで終了させる

組み込みの関数を使って Python スクリプトを終了させる簡単で効果的な方法は quit() メソッドです。このコマンドが実行されると、OS に SystemExit 例外が発生します。完全なサンプルコードは以下の通りです。

for test in range(10):
    if test == 5:
        print(quit)
        quit()
        print(test)

出力:

0
1
2
3
4
Use quit() or Ctrl-Z plus Return to exit

Python プログラムを exit() メソッドで終了する

機能は quit() メソッドと同じですが、Python ライブラリをインポートする必要はありません。完全なサンプルコードは以下の通りです。

for test in range(10):
    if test == 5:
        print(exit)
        exit()
    print(test)

出力:

0
1
2
3
4
Use exit() or Ctrl-Z plus Return to exit

sys.exit() メソッドで Python プログラムを終了する

このメソッドは quit()exit() よりも優れています。構文は以下の通りです。

sys.exit([arg])

構文では arg はオプションです。大抵は整数値ですが、文字列も渡すことができます。引数の値が 0 の場合は正常終了のベストケースと考えられています。完全なサンプルコードは以下の通りです。

import sys

weight = 70
if weight < 80:
    sys.exit("weight less than 80")
else:
    print("weight is not less than 80")

出力:

SystemExit: weight less than 80

Python プログラムを os.exit() メソッドで終了させる

このメソッドは、スクリプト内の子プロセスのような特別な状態でプロセスを終了させるために用いられます。子プロセスは os.fork() メソッドを用いて作成することができます。Linux では os.fork() コマンドが効率的に動作するが、Windows 用の Cygwin-built を利用する必要があります。その参照はこちらです。

完全なサンプルコードは以下の通りです。

import os

parent_id = os.fork()
if parent_id > 0:
    print("\nIn parent process")
    info = os.waitpid(parent_id, 0)
    if os.WIFEXITED(info[1]):
        code = os.WEXITSTATUS(info[1])
        print("Child's exit code:", code)
else:
    print("child process")
    print("Process ID:", os.getpid())
    print("Test Code")
    print("Child exiting..")
    os._exit(os.EX_OK)

os.wait() メソッドは子プロセスの ID とその終了ステータスを返します。終了コードは os._exit() メソッドを用いて取得します。

出力:

AttributeError: module 'os' has no attribute 'fork'

終了コード

上記のすべての方法の中で、sys.exit() メソッドが好ましい。一方、os.exit() コマンドは特定のシナリオや即時終了の場合に使うべきです。