-
が付いたものをオプション、その後に続くものを引数と呼ぶ (–option argument
)import argparse parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter) parser.add_argument("foo", help = "positional1") parser.add_argument("bar", help = "positional2") parser.add_argument("--input", "-i", metavar = "file", dest = "hoge", nargs = "+", help = "optional") parser.add_argument("-n", metavar = "number", dest = "number", type = int, help = "number", required = True) parser.add_argument("-f", dest = "flag", action = "store_true", help = "flag option") : : args = parser.parse_args()
parser
: parser オブジェクトArgumentParser()
: パーサーの設定formatter_class=argparse.RawTextHelpFormatter
を指定すると、後述の help
で改行が使える.add_argument
: オプションおよび引数の登録foo
or bar
: 位置引数foo bar
の順に与えなければならない–input
or -i
: オプション引数-
か –
を付けることで指定できるadd_argument()
の頭で指定するhelp = “…”
: ヘルプArgumentParser()
で formatter_class=argparse.RawTextHelpFormatter
を指定していれば、\n
で改行もできるmetavar = “…”
: ヘルプで表示するための引数の対象–input INPUT, -i INPUT
とロングオプション (なければ、ショートオプション) を大文字にした文字列がオプションの後に続いてユーザを混乱させる (オプションと引数が一致していれば問題ない) –input file, -i file
となり、ファイルを指定すれば良いことがユーザに伝わるdest = “…”
: 引数を受け取るための変数名args.変数名
で受け取ることができる変数名
は dest で指定した変数名 > ロングオプション名 > ショートオプション名の優先順位で決まるargs.hoge
や args.number
で受け取ることができるnargs = “…”
: 引数の数を指定nargs = 1
になっている)?
を指定した場合、1 つの引数か、ない場合は default = “…”
で指定した引数になる (default を指定しない場合は、None
が渡される)*
を指定した場合、0 以上の引数を必要とする (0 以上なのでなくても良い)+
を指定した場合、最低 1 以上の引数を必要とする*
、+
を指定した場合は、リストで引数を受け取ることができるtype = …
: 引数の型を指定required = True
: 必須オプション (True でオプションが必須になる)action = “store_true”
: オプションの有無で値を決定するstore_true
は、オプションが指定された時に変数に True
を代入するstore_false
は、指定された時に変数に False
を代入するargs
: 引数オブジェクトadd_argument_group()
を用いる。parser = argparse.ArgumentParser(description = "test", formatter_class=argparse.RawTextHelpFormatter) group_a = parser.add_argument_group("Group A") group_a.add_argument("foo", help = "help message for foo") group_a.add_argument("bar", help = "help message for bar") group_b = parser.add_argument_group("Group B") group_b.add_argument("hoge", help = "help message for hoge") args = parser.parse_args()
parser
にグループ (Group A
と Group B
) を追加した変数 (group_a
と group_b
) を作成し、それぞれに引数を追加していく。$ test.py --help usage: test.py [-h] foo bar hoge test optional arguments: -h, --help show this help message and exit Group A: foo help message for foo bar help message for bar Group B: hoge help message for hoge
add_mutually_exclusive_group()
を使う。parser = argparse.ArgumentParser(description = "test", formatter_class=argparse.RawTextHelpFormatter) group = parser.add_mutually_exclusive_group() group.add_argument("--foo", help = "help message for foo") group.add_argument("--bar", help = "help message for bar") args = parser.parse_args()
add_argument_group()
と同様に、グループ group
を作成し、その中に同時に指定できない引数を加える (加える引数は 2 つ以上でも OK)。required
を指定するのではなく、add_mutually_exclusive_group(required = True)
にする (引数に required
を付けるとエラーになる)。import argparse import sys parser = argparse.ArgumentParser(description = "...") parser.add_argument("-a", required = False, help = "A requires B") parser.add_argument("-b", required = "-a" in sys.argv, help = "B") parser.add_argument("-c", help = "C") args = parser.parse_args()
-a
が含まれているかを調べて、True
か False
を動的に required
に与えているだけ。