Argparse неверный порядок позиционных и дополнительных параметров
-
27-10-2019 - |
Вопрос
Почему Argparse не разрабатывает эти аргументы?
--foo 1 2 3 bar
С использованием
parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='+')
parser.add_argument('bar')
что дает следующую ошибку:
Ошибка: слишком мало аргументов
Если я сначала передам аргумент ведущего, он работает:
bar --foo 1 2 3
Теперь это само по себе не так уж плохо. Сначала я могу жить с позиционными аргументами, это просто то, что это поведение не соответствует помощи, создавая Ardparse для нас, что утверждает, что бар должна быть последней:
Использование: argparsetest.py [-h] [--foo foo [foo ...]] Бар
Так как же сделать эту работу с последовательным текстом справки?
Вот полный Программа тестирования.
Решение
Может быть, попробуйте сделать -вводить флаги -выход и установить эти параметры на необходимые = true в add_argument?
http://docs.python.org/dev/library/argparse.html#the-add-argument-method
Другие советы
nargs='+'
говорит Argparse собрать все оставшиеся ARG вместе, так что bar
Включено. У него нет волшебного способа догадаться, что вы собираетесь bar
быть значимым аргументом само по себе, а не частью аргументов, взятых на --foo
.
Пример в документах относится к простому --foo
аргумент, а не с nargs='+'
. Анкет Обязательно поймите разницу.