【Python】コマンドライン引数の取得とargparseの使い方

【Python】コマンドライン引数の取得とargparseの使い方

記事の文字数:1461

Pythonでコマンドライン引数を取得する場合は、sysモジュールのargvを参照します。インデックスの1つ目がPythonファイル名で、2つ目以降からコマンドライン引数を参照することができます。


スポンサーリンク

Pythonでコマンドライン引数を取得する場合は、sysモジュールのargvを参照します。
インデックスの1つ目がPythonファイル名で、2つ目以降からコマンドライン引数を参照することができます。
また、argparseモジュールを使うと入力チェック処理を実装することもできます。

動作環境

Python 3.12.7

コマンドライン引数を渡す

引数を指定してPythonコードを実行する場合は、以下のように指定します。

構文

python [ファイル名].py [引数1] [引数2] [引数3]…

実行例

python argv-test.py apple banana orange

コマンドライン引数を受け取る

Pythonではargv[0]がargv-test.pyで、argv[1]以降がコマンドライン引数となります。

引数のインデックス

python argv-test.py apple banana orangeを実行した場合、引数とインデックスの紐づきは以下の通りとなります。

インデックス内容備考
0argv-test.py実行ファイル名
1apple第一引数
2banana第二引数
3orange第三引数

コードでの引数受け取り

sys.argv[インデックス]で値を受け取ります。

コードサンプル(argv-test.py)

import sys
for i in range(len(sys.argv)):
print("argv[" + str(i) + "] = " + sys.argv[i]);

実行結果例(argv-test.py)

python argv-test.py apple banana orangeの実行結果例です。

argv[0] = argv-test.py
argv[1] = apple
argv[2] = banana
argv[3] = orange

argparseを使う

argparseモジュールを使うと、入力チェックを含めた実装ができます。

実装例

以下サンプルのソースコードになります。

ファイル名:argv-test.py

import argparse
# インスタンス作成
parser = argparse.ArgumentParser(
prog="サンプルプログラム",
usage="python argv-test.py <user_name:str> <password:str> <age:int>",
description="引数のチェックを行うプログラムです。",
epilog="以上",
add_help=True,
)
# 引数を設定する
parser.add_argument("user_name", type=str, help="ユーザ名")
parser.add_argument("password", type=str, help="パスワード")
parser.add_argument("age", type=int, help="年齢")
# 引数を解析する
args = parser.parse_args()
# argsから設定値を取得して、表示する。
print(f"ユーザ名: {args.user_name}")
print(f"パスワード: {args.password}")
print(f"年齢: {args.age}")

argparse.ArgumentParserのインスタンス引数は以下のように指定します。

引数説明設定例
progプログラム名を指定する。サンプルプログラム
usageプログラムの使用方法を記載する。python argv-test.py <user_name> <password> <age>
descriptionプログラムの説明文を記載する。引数のチェックを行うプログラムです。
epilogヘルプの最後に表示する文字列。以上
add_help-h/–-helpオプションの追加True or False

テストプログラムのヘルプ表示

-hまたは--helpを指定することで、ヘルプを表示することができます。(add_helpがTrueの場合)

$ python argv-test.py -h
usage: python argv-test.py <user_name:str> <password:str> <age:int>
引数のチェックを行うプログラムです。
positional arguments:
user_name ユーザ名
password パスワード
age 年齢
options:
-h, --help show this help message and exit
以上

テストプログラム実行(正常系)

以下テストプログラムの実行例です。

python argv-test.py test_user password 21

実行結果(正常系)

ユーザ名: test_user
パスワード: password
年齢: 21

テストプログラム実行(異常系①)

年齢(第三引数)に文字列を指定した場合の挙動を確認しました。

python argv-test.py test_user password aaa

実行結果(異常系①)

年齢に数値を指定していないため、エラーメッセージが表示されました。

usage: python argv-test.py <user_name:str> <password:str> <age:int>
サンプルプログラム: error: argument age: invalid int value: 'aaa'

テストプログラム実行(異常系②)

年齢(第三引数)を指定しなかった場合の挙動を確認しました。

python argv-test.py test_user password

実行結果(異常系②)

年齢が必須である旨のエラーメッセージが表示されました。

usage: python argv-test.py <user_name:str> <password:str> <age:int>
サンプルプログラム: error: the following arguments are required: age

まとめ

  • Pythonでコマンドライン引数を扱うには、sysモジュールのargvを利用する。
  • インデックス0は、実行ファイル名でインデックス1以降がコマンドライン引数となる。
  • 入力チェックや引数の指定方法を実装する場合は、argparseモジュールを利用すると便利。

以上で本記事の解説を終わります。
よいITライフを!
スポンサーリンク
Scroll to Top