[python]コマンドライン引数を取得する方法(sys.argv)
はじめに
Pythonスクリプトにコマンドライン引数を使用する方法です。
手軽に使用するには、標準ライブラリに含まれる sys
モジュールの argv
を使用します。
開発環境
OS : Windows 11 Pro
Python:3.13.2
使用ライブラリ:なし
使用方法
次のようなサンプルスプリクトで試してみます。
# ---------------------------------------------------------------------------
# [python]コマンドライン引数を取得する方法(sys.argv)
# https://www.farmsoft.jp/2593/
# ---------------------------------------------------------------------------
import sys
print('------------------------------')
print('sys.argv : ', sys.argv)
print('type(sys.argv) : ', type(sys.argv))
print('len(sys.argv) : ', len(sys.argv))
print('------------------------------')
for i in range(len(sys.argv)) :
print(f'sys.argv[{i}] : {sys.argv[i]}')
print(f'type(sys.argv[{i}]): {type(sys.argv[i])}')
print('------------------------------')
そして、次のように「test 1 2 3」を引数にコマンドラインから実行してみます。
> python .\sys.argv.py test 1 2 3
------------------------------
sys.argv : ['.\\sys.argv.py', 'test', '1', '2', '3']
type(sys.argv) : <class 'list'>
len(sys.argv) : 5
------------------------------
sys.argv[0] : .\sys.argv.py
type(sys.argv[0]): <class 'str'>
sys.argv[1] : test
type(sys.argv[1]): <class 'str'>
sys.argv[2] : 1
type(sys.argv[2]): <class 'str'>
sys.argv[3] : 2
type(sys.argv[3]): <class 'str'>
sys.argv[4] : 3
type(sys.argv[4]): <class 'str'>
------------------------------
sys.argv
にコマンドラインで実行した内容がリスト型で格納されているのがわかります。
そして、sys.argv[0]
にコマンド内容。sys.argv[1]
~ sys.argv[4]
に引数が全て文字列のstr
型で格納されています。
sys.argv[0] について
sys.argv[0]
はスクリプトの名前となりますが、フルパス名かどうかは、OSによって異なります。コマンドライン引数に -c
を付けて Pythonを起動した場合、 argv[0]
は文字列 '-c'
となります。スクリプト名なしでPythonを起動した場合、 argv[0]
は空文字列になります。
https://docs.python.org/ja/3/library/sys.html#sys.argv
注意事項
❌sys.argv
は、リスト型に引数を格納するため、実際より少ない引数を参照すると、エラーとなります。そのため、len(sys.argv)
などのように引数の数を確認してから参照する必要があります。
❌全て文字列のstr型で格納されますので、数値で判定する場合は数値に変換する必要があります。
コメント