Я думал, что nargs='*'
достаточно для обработки переменного количества аргументов. По-видимому, это не так, и я не понимаю причину этой ошибки.
Код:
p = argparse.ArgumentParser()
p.add_argument('pos')
p.add_argument('foo')
p.add_argument('--spam', default=24, type=int, dest='spam')
p.add_argument('vars', nargs='*')
p.parse_args('1 2 --spam 8 8 9'.split())
Я думаю, что получившееся пространство имен должно быть Namespace(pos='1', foo='2', spam='8', vars=['8', '9'])
. Вместо этого argparse дает эту ошибку:
usage: prog.py [-h] [--spam SPAM] pos foo [vars [vars ...]]
error: unrecognized arguments: 9 8
В принципе, argparse не знает, куда помещать эти дополнительные аргументы... Почему это?