Pythonのプログラムを終了する

Pythonのスクリプトで、条件分岐した結果スクリプトを終了したいときには、sysモジュールのexitメソッドを呼び出します。

目次

  1. sys.exit()メソッド
  2. bashで試してみる

sys.exit()メソッド

sys.exit([arg])
変数 内容
arg 省略可。終了ステータス、またはエラー出力。

sys.exit()はPythonを終了します。 argが0の時は正常終了、argが0以外の整数の場合は異常終了になります。 argに数値以外を指定した場合は、標準エラー出力にそれが出力されます。

bashで試してみる

bashでPython3を使って試してみました。

こんなスクリプトです。

import sys

print('標準出力')

sys.exit()

標準出力に「標準出力」と出力して、終了するだけのものです。

bashで、こんな感じに実行してみます。

$ python test.py > result.txt && python test.py >> result.txt

test.pyの実行結果をファイルにリダイレクトして成功だったら、もう一度test.pyを実行してファイルに追記するというものです。

実行結果では画面には何も表示されず、ファイルの中身はこうなります。

標準出力
標準出力

test.pyが2回実行されたことがわかります。

こんな感じで、いくつかのパターンを試してみます。

まず、exit()の引数を0にした場合です。

スクリプト

import sys

print('標準出力')

sys.exit(0)

画面

$ python test.py > result.txt && python test.py >> result.txt
$

result.txtの中身

標準出力
標準出力

次に、exit()の引数を1にした場合です。

スクリプト

import sys

print('標準出力')

sys.exit(1)

画面

$ python test.py > result.txt && python test.py >> result.txt
$

result.txtの中身

標準出力

1回目のtest.pyが標準出力にした後に異常終了したので、2回目のtest.pyが実行されませんでした。そのため、result.txtには1回目の結果しか出力されていません。

それでは、エラーメッセージを指定してみます。

スクリプト

import sys

print('標準出力')

sys.exit('エラー')

画面

$ python test.py > result.txt && python test.py >> result.txt
エラー
$

result.txtの中身

標準出力

1回目のtest.pyが標準出力にした後に異常終了して標準エラー出力(コンソール)に「エラー」と出力されました。その時点でスクリプトが停止されて、2回目のtest.pyが実行されませんでした。そのため、result.txtには1回目の結果しか出力されていません。

正常な出力とエラー出力を分けたい場合に便利ですね。

広告

Pythonカテゴリの投稿