環境
- Windows 10
- Python 3.9.4
- VSCode
使用するソースコード
以下の公開リポジトリに置いています
GitHub - masayan1126/tao-py-py: 作業自動化用 Python ライブラリ
作業自動化用 Python ライブラリ. Contribute to masayan1126/tao-py-py development by creating an account on GitHub.
実装

masayan
sysモジュールのargvもしくは、argparseを使用することで、
コマンドライン引数のリストが取得できます。
なお、上記はいずれも標準モジュールです。
sysモジュールのargv
コマンドラインから以下のように引数を2つ渡してhoge.pyを実行します
pipenv run python packages/hoge.py 150 2
- args[0]には、実行したpythonスクリプトのファイル名が入ります
- args[1]移行は、コマンドラインから渡した引数が入ります
- コマンドラインから引数を指定する際は、半角スペースを入れる必要があります
hoge.py
import sys
args = sys.argv
print(args[0]) # packages/hoge.py
price = int(args[1]) # 150
quantity = int(args[2]) # 2
print(price * quantity) # 300
argparse

masayan
argparseは、以下のようなメリットがあるので、個人的にはsys.argvよりもおすすめです。
- コマンドラインから引数で受け取るデータ型を指定できる
- 引数を省略した場合のdefault値を指定できる
- Enumのように、予めプログラム上に配列で指定した値しか受け取れなくできる
コマンドラインから以下のように引数を2つ渡してhoge.pyを実行します
pipenv run python packages/hoge.py 150 2
- argparse.ArgumentParser()でインスタンスを作成し、add_argumentでコマンドラインから受け取る引数名と型を指定する
- 実際に受けとった引数を使用する場合は、args.hogeの形で取り出すことが可能
- つまり、argvよりもオブジェクト指向っぽい使い方をすることが可能
hoge.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("price", type=int)
parser.add_argument("quantity", type=int)
args = parser.parse_args()
print(args.price * args.quantity) # 300
任意の引数とデフォルト値の設定方法は以下の通り
- add_argument(“–price”のように、–をつけると、任意のコマンド引数になり、キーワード引数defaultでデフォルト値を指定する
- 実行時には指定してもしなくても良くなる(指定されなかった場合はNone)
- 指定する順番も自由
- pipenv run python packages/hoge.py 2 のように実行すると、デフォルトのpriceが100なので、100×2となり結果は200となる
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--price", type=int, default=100)
parser.add_argument("quantity", type=int)
args = parser.parse_args()
print(args.price * args.quantity) # 200