Argparse неверный порядок позиционных и дополнительных параметров

StackOverflow https://stackoverflow.com/questions/5854920

Вопрос

Почему 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='+'. Анкет Обязательно поймите разницу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top