[python]コマンドライン引数を取得する方法(sys.argv)

python
スポンサーリンク

[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型で格納されますので、数値で判定する場合は数値に変換する必要があります。

おわりに

コメント

タイトルとURLをコピーしました