Argparse не признавая аргументы - PullRequest
0 голосов
/ 20 февраля 2019

У меня проблемы с argparse.Моя цель состоит в том, чтобы пользователь выбрал один и только один параметр (-a, -b, -c и т. Д.), А затем аргументы для этого параметра.Для этого я использую подпарсеры:

parser_iq = subparsers.add_parser('iq', help='iq help')
parser_iq.add_argument("-iq", "--index_query", nargs="+", action=required_length(1,6),type=organize_args, help="Choose an index to query for. Start-date, end-date,  "\
           "csv, json, stdout are all optional")

Это только один из подпарсеров, которые я планирую иметь.

Проблема : При выполнении этого в командной строке:

python3.6 main.py iq "index_name_here"

Я получаю сообщение об ошибке, что «index_name_here» не распознается.Я анализирую это так:

args = parser.parse_args()

Я обнаружил некоторые проблемы, похожие на мою, но они передавались в sys.argv в parse_args (), что было их проблемой.

Как я могу сделать так, чтобы argparse распознал переданные аргументы?Кроме того, есть ли способ, чтобы за один раз была передана только одна опция?Например:

Правильно:

main.py option1 arg1 arg2

Неправильно:

main.py option1 option2 arg1 arg2

Спасибо!

1 Ответ

0 голосов
/ 20 февраля 2019

Вы должны передать значение, например python3.6 main.py -iq "index_name_here" (то есть использовать -iq, а не iq).

Что касается взаимоисключающих аргументов, то, как я понимаю, подпарасерыпуть, но я не могу дать много указаний о том, как действовать дальше.

Редактировать:

В ответ на ваш комментарий выполняет следующую работу:

python3.6 main.py iq -iq "index_name_here"

?

...