この記事では、Pythonのプログラムを終了させる方法を解説します。
Pythonでプログラムを終了させるには、exit()関数を使います。exit()関数には、以下の3つの種類があります。
それでは、それぞれのexit()関数の使い方を見ていきましょう!
exit()関数は、対話型シェルを終了させるための関数です。ターミナルやコマンドプロンプトで起動中の対話型シェルを終了させたい場合に使います。
$ python3 Python 3.7.7 (default, Mar 10 2020, 15:43:27) [Clang 10.0.0 (clang-1000.11.45.5)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> exit() $
ちなみに、以下のショートカットでも終了させることができます。
Mac = control + D
Window = ctrl + D
sysモジュールのexit()関数は、ソースコード内からプログラムを強制終了させるための関数です。オプション引数であるargには、整数や他の型のオブジェクトを指定できます。
以下のようにsysモジュールをインポートして使います。
import sys sys.exit([arg])
arg引数を指定することで終了ステータスやエラーメッセージを出力できます。
引数に整数を渡すことで終了ステータスを指定することができます。
# 正常終了 sys.exit(0) # 異常終了 sys.exit(1)
引数に文字列を渡すことでエラーメッセージとして強制終了時に出力してくれます。終了ステータスは「1」を返します。
sys.exit('エラーメッセージ')
終了ステータスは、ターミナルやコマンドプロンプト内で以下のコマンドをコード実行後に使用することで確認できます。
echo $?
サンプル
試しに、ターミナルでコード実行後に echo $? を呼び出してみます。
exit.py
import sys print('exit 実行') sys.exit(1) print('exit 終了')
ターミナル
$ python3 exit.py exit 実行 $ echo $? 1
「1」が表示されて終了ステータスを確認することができました!
sys.exit()関数は、SystemExit例外を送出してPythonプログラムを終了させています。なので、tryブロック内で処理してもプログラムを終了させることができません。
import sys try: sys.exit() except: pass # 実行される print('Hello!')
実行結果
Hello!
それでは、サンプルコードでsys.exit関数の挙動を見ていきます。下記のコードは、input関数で値を入力してもらい、その値によって処理を分岐させるコードです。
exit.py
import sys value = input('value: ') if value == 'exit': print('exit(0)') sys.exit(0) elif value == 'error': print('exit(1)') sys.exit(1) elif value == 'error_message': print('exit(エラーメッセージ)') sys.exit('エラー発生') else: print(f'{value}が入力されました!') # 問題がなければここまで到達する print('プログラム終了')
それぞれの実行パターン毎に結果を見ていきます。
sys.exit関数が処理されていない通常のパターンです。「プログラム終了」まで処理されているのがわかります。
$ python3 exit.py value: hello helloが入力されました! プログラム終了 $ echo $? 0
sys.exit関数が処理され、Pythonが終了したことにより「プログラム終了」が出力されていません。
$ python3 exit.py value: exit exit(0) $ echo $? 0
こちらのパターンでもsys.exit関数が処理され、Pythonが終了したことにより「プログラム終了」が出力されていません。終了ステータスは「1」が返されました。
$ python3 exit.py value: error exit(1) $ echo $? 1
sys.exit関数の引数に指定した文字列が、Python終了時に出力されているのがわかります。終了ステータスは「1」です。
$ python3 exit.py value: error_message exit(エラーメッセージ) エラー発生 $ echo $? 1
os._exit関数を使うことでスレッドの保持している資源を解放したり、バッファをフラッシュしたりせずに強制終了します。
例えば、os.fork関数で作成した子プロセス内で使用します。
Linkos.fork()
この記事では、Pythonのexit()関数について解説しました!
exit()関数は、プログラムを終了させたり、デバッグなどにも使うことができました。
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ