ArgumentParser — コマンドライン引数の実装
- https://docs.python.org/ja/3/library/argparse.html
- https://qiita.com/kzkadc/items/e4fc7bc9c003de1eb6d0
Python プログラム実行時にコマンドライン引数を受け取る処理を簡単に実装できる標準ライブラリ。 sys
とかでも似たことは実現できるけど使い勝手と可読性は argparse
の方が圧倒的にいい。
基本的な使い方
import argparse
= argparse.ArgumentParser()
parser
"--input") # オプション引数
parser.add_argument("-o", "--output") # ハイフン1つの省略形も追加できる
parser.add_argument("arg1") # ポジション引数
parser.add_argument("arg2", help="2つ目のポジション引数") # --helpしたときの説明を書いておける
parser.add_argument(
= parser.parse_args()
args
print("arg1="+args.arg1)
print("arg2="+args.arg2)
print("arg3="+args.input)
print("arg4="+args.output)
実行する:
python3 test.py hoge fuga --input koke -o piyo
# arg1=hoge
# arg2=fuga
# arg3=koke
# arg4=piyo
ポジション引数は順番通りならどこでもいい:
python3 test.py hoge --input koke -o piyo fuga
# arg1=hoge
# arg2=fuga
# arg3=koke
# arg4=piyo
-h
, --help
でヘルプを表示:
python3 test.py -h
# usage: test.py [-h] [--input INPUT] [-o OUTPUT] arg1 arg2
#
# positional arguments:
# arg1
# arg2 2つ目のポジション引数
#
# optional arguments:
# -h, --help show this help message and exit
# --input INPUT
# -o OUTPUT, --output OUTPUT
ポジション引数
parser.add_argument("argN")
とすると必須引数扱いになり、指定しないとエラーになる。
オプション引数
デフォルト値と型の指定
オプション引数は指定しないと None
が入る。 これ以外にデフォルト値を設定したり、データ型を指定することができる。
"-n", "--number", type=float, default=0.0) parser.add_argument(
異なる型を指定するとエラーになる(int
-> float
は勝手に変換される):
python3 test.py --number hoge
# test.py: error: argument --number: invalid float value: 'hoge'
あらかじめ引数の選択肢を設定
"-l", "--letter", choices=["hoge", "fuga", "piyo"]) parser.add_argument(
選択肢以外の引数を指定するとエラーになる。
複数個の引数を受け取る
"-a", "--alphabet", nargs="*")
parser.add_argument(= parser.parse_args()
args print(args.alphabet)
受け取った引数はリストになって利用できる:
python3 test.py --alphabet A G X
# ['A', 'G', 'X']
オプション引数を必須引数にする
"-n", "--need", requied=True) parser.add_argument(