narg
nargs=*
で引数が無い時の挙動が位置引数とオプション引数で違う.
python test.py
parser = argparse.ArgumentParser()
parser.add_argument('infile', nargs='*')
parser.add_argument('-f', '--foo', nargs='*')
args = parser.parse_args()
print(args.infile)
print(args.foo)
引数なしで実行
python3 test.py
[]
None
位置引数は空のリストになるが,オプション引数はNoneになる.
-f
だけつけて引数なしの場合
$ python3 test.py
[]
[]
この場合は空のリストになる.
helpをプリントする方法
python test.py
parser = argparse.ArgumentParser()
parser.add_argument('infile', nargs='*')
parser.add_argument('-f', '--foo', nargs='*')
args = parser.parse_args()
parser.print_help()
$ python3 test.py
usage: test.py [-h] [-f [FOO ...]] [infile ...]
positional arguments:
infile
optional arguments:
-h, --help show this help message and exit
-f [FOO ...], --foo [FOO ...]