スポンサーリンク

【Python】終了コードの設定方法

記事内に広告が含まれています。

終了コードは、プログラムが正常に終了したか、エラーで停止したかを示すコードで、0は正常終了を、0以外の数は異常終了を意味します。

終了コードはOSやシステムにプログラムの実行結果を伝える役割を持ちます。

通常、シェルやスクリプトで実行する場合、終了コードによって次の処理を決定することができます。

以下にPythonにおける基本的な扱い方と活用法をまとめてみます。

スポンサーリンク

Pythonでの終了コードの指定方法

終了コードは、標準ライブラリのsys.exit()を使って設定できます。

例えば、以下のように書きます。

import sys

# 正常終了(終了コード0)
sys.exit(0)

# エラー終了(終了コード1)
sys.exit(1)

sys.exit()内で数値を指定することで、プログラムが終了する際のコードを決めることができます。

スポンサーリンク

try-exceptによる終了コードの活用

エラーの種類に応じて異なる終了コードを設定することもできます。

たとえば、ファイルが見つからない場合と、アクセスが拒否された場合で異なる終了コードを指定することにより、システム側でのエラーハンドリングが容易になります。

try:
    with open("example.txt", "r") as file:
        content = file.read()
except FileNotFoundError:
    print("File not found.")
    sys.exit(1)
except PermissionError:
    print("Permission denied.")
    sys.exit(2)

サブプロセスと終了コード

Pythonではsubprocessモジュールを使って他のプログラムを実行することが多くあります。

終了コードを取得するにはsubprocess.run()を使い、戻り値としてreturncode属性を利用します。

import subprocess

result = subprocess.run(["ls", "non_existent_file"])
print("Exit code:", result.returncode)

atexitモジュールを使った終了時の処理

atexitモジュールを利用すると、プログラムが終了する前に特定の処理を行うことができます。

正常終了や異常終了問わずに終了時の処理が必要な場合に便利です。

import atexit

def on_exit():
    print("Program is ending. Clean-up tasks are performed.")

atexit.register(on_exit)

カスタム終了コードの実装

終了コードには0~255の範囲で任意の値を設定できますが、数値に特定の意味を持たせるとよいでしょう。

例えば、0は正常終了、1は一般的なエラー、2はファイルエラーとすることで、終了コードだけで原因が明確になります。

# 正常終了
NORMAL_EXIT = 0
# 一般的なエラー
GENERAL_ERROR = 1
# ファイルエラー
FILE_ERROR = 2

try:
    # 何らかの処理
    sys.exit(NORMAL_EXIT)
except Exception:
    sys.exit(GENERAL_ERROR)

まとめ

  • sys.exit()で終了コードを指定し、プログラムの終了方法をコントロールできます。
  • try-exceptと組み合わせることで、エラーごとに異なる終了コードを設定可能です。
  • subprocessを使って終了コードを他のプロセスと連携させることができます。
  • atexitモジュールで終了時のクリーンアップ処理を実装可能です。

終了コードはシェルスクリプトなどからPythonスクリプトを制御する際にも役立ちます。

スポンサーリンク
Python
著者SNS
タイトルとURLをコピーしました