Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
sys.argv / sys.exit() / sys.path
コマンドライン引数の取得・スクリプトの終了・モジュール検索パスなどを管理する『sys』モジュールの属性と関数です。
構文
import sys # コマンドライン引数のリスト(0番目がスクリプト名) sys.argv # スクリプトを終了します(終了コードを指定できます)。 sys.exit(0) # 正常終了 sys.exit(1) # 異常終了 # モジュールの検索パスのリスト sys.path # Pythonのバージョン文字列 sys.version # 実行環境のプラットフォーム sys.platform
属性・関数一覧
| 属性 / 関数 | 概要 |
|---|---|
| sys.argv | コマンドライン引数の文字列リストです。『sys.argv[0]』はスクリプト名、以降がユーザーが渡した引数になります。 |
| sys.exit(code) | スクリプトを終了します。終了コードに0を指定すると正常終了、1以上で異常終了を表します。 |
| sys.path | Pythonがモジュールを検索するディレクトリのリストです。リストに追加することで独自モジュールのパスを通せます。 |
| sys.version | 実行中のPythonのバージョン情報を文字列で返します。 |
| sys.version_info | バージョン情報をタプル形式で返します。バージョン比較に使えます。 |
| sys.platform | 実行環境を示す文字列を返します(例: 『linux』、『darwin』、『win32』)。 |
| sys.stdin / sys.stdout / sys.stderr | 標準入力・標準出力・標準エラー出力のファイルオブジェクトです。 |
サンプルコード
import sys
# sys.argv でコマンドライン引数を取得します。
# python script.py hello 42 と実行した場合:
print(sys.argv[0]) # スクリプト名: 『script.py』と出力されます。
print(sys.argv[1]) # 1番目の引数: 『hello』と出力されます。
print(sys.argv[2]) # 2番目の引数: 『42』と出力されます。
print(len(sys.argv)) # 引数の数: 『3』と出力されます。
# 引数が不足している場合のエラーチェック
if len(sys.argv) < 2:
print('使い方: python script.py <ファイル名>', file=sys.stderr)
sys.exit(1) # 異常終了します。
# 引数を受け取って処理します。
filename = sys.argv[1]
print(f'処理するファイル: {filename}')
# sys.path にパスを追加してモジュールを読み込めるようにします。
sys.path.append('/path/to/my/modules')
# sys.version でバージョンを確認します。
print(sys.version) # 例: 『3.12.0 (main, ...)』と出力されます。
# バージョン比較には version_info を使います。
if sys.version_info >= (3, 10):
print('Python 3.10以降です。match文が使えます。')
# sys.platform で環境を判定します。
if sys.platform == 'win32':
print('Windowsで実行中です。')
elif sys.platform == 'darwin':
print('macOSで実行中です。')
else:
print('Linuxで実行中です。')
# 標準エラー出力にメッセージを出力します。
print('エラーが発生しました。', file=sys.stderr)
概要
『sys.argv』はコマンドラインからスクリプトに引数を渡すための基本的な仕組みです。すべての引数は文字列として格納されるため、数値として扱う場合は『int()』や『float()』で変換してください。より複雑な引数処理が必要な場合は標準ライブラリの『argparse』モジュールを使うと、ヘルプメッセージの自動生成や型変換・省略可能な引数などを簡単に実装できます。
『sys.exit()』は内部的に『SystemExit』例外を発生させます。そのため『try/except』で捕捉することも可能ですが、通常は捕捉せずにスクリプトを終了させます。終了コードはシェルスクリプトやCI/CDシステムが成功・失敗の判定に使います。エラー時は必ず0以外のコードで終了してください。
環境変数の取得は『os.environ / os.getenv()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。