Почему argparse не анализирует эти аргументы?
--foo 1 2 3 bar
С использованием
parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='+')
parser.add_argument('bar')
что дает следующую ошибку:
ошибка: слишком мало аргументов
Если я сначала передам аргумент bar, он сработает:
bar --foo 1 2 3
Теперь, это само по себе не так уж плохо. Я могу жить с позиционными аргументами в первую очередь, просто это поведение несовместимо с помощью, которую создает для нас argparse, в которой говорится, что bar должен быть последним:
использование: argparsetest.py [-h] [--foo FOO [FOO ...]] бар
Так как же заставить это работать с последовательным текстом справки?
Вот полная тестовая программа.
--
для завершения подстановкиnargs
, поэтому--foo 1 2 3 -- bar
должно работать в приведенном выше примере. На мой взгляд, это действительно должно решаться автоматически, оставляя количество аргументов, необходимых для позиционных аргументов. Обсуждения этого открытого вопроса ведутся на bugs.python.org/issue9338 и bugs.python.org/issue9182 (по крайней мере, это должно быть четко задокументировано). - person Daniel Andersson   schedule 21.04.2013--
чтобы остановить список, это так круто. это мой любимый ответ. - person Ulf Gjerdingen   schedule 19.10.2020