Считают, что:
import argparse
p = argparse.ArgumentParser()
p.add_argument('foo', nargs='+')
p.add_argument('--bar')
p.parse_args(['-baz'])
терпит неудачу с:
error: unrecognized arguments: -baz
Можно ли как-то настроить ArgumentParser
для обработки нераспознанных опций как позиционных аргументов?
В приведенном выше примере p.parse_args(["-baz"])
вместо этого должно возвращаться Namespace(foo=["-baz"])
.
'--' — это псевдоаргумент, который указывает синтаксическому анализатору обрабатывать все следующие строки как позиционные.
https://docs.python.org/3/library/argparse.html#arguments-content
Также обратите внимание на использование parse_known_args
https://docs.python.org/3/library/argparse.html#partial-parsing
Я знаю о "--" спасибо, но похоже, что
parse_known_args
- мой лучший выбор здесь. Я думаю, что если я вообще оставлю вызовadd_argument('foo', nargs='+')
, то второй элемент результата кортежаparse_known_args
можно будет использовать вместо значенияfoo
.