анализатор аргументов python определяет имя переменной для ввода типа списка - PullRequest
0 голосов
/ 04 июня 2018

У меня есть возможность прочитать список ввода от пользователей.Список может иметь произвольную длину.Вот мой код:

parser.add_argument('-at', '--addTests', metavar=('test_commands'), nargs='+')

Использование 'metavar' - это хороший способ присвоения имен переменным, но он не работает, когда nargs не исправлен.

Результат, который я получаю из этой строки:

-at test_command [test_command ...], --addTests test_command [test_command]

Я надеюсь, что результат показывает только "test_command" один раз.

1 Ответ

0 голосов
/ 04 июня 2018

Вы путаетесь со значением

--addTests test_command [test_command]

Вы думаете, что это означает, что [test_command] - это список аргументов.

Обратите внимание, что для обозначения [arg] используетсяаргументы, которые являются необязательными.Поскольку вы использовали nargs='+', пользователи должны предоставить как минимум один аргумент для опции -at/--addTests, а любые дополнительные аргументы необязательны для --addTests.

Таким образом, используя:

--addTests test_command test_command2

при вызове вашего скрипта:

args = parser.parse_args()

даст следующие проанализированные аргументы:

Namespace(addTests=['test_command', 'test_command2']

Затем вы можете получить к ним доступ с помощьюиспользуя:

for command in args.addTests: 
    print command

В качестве альтернативы (вместо печати) вы можете запускать команды и т. д.

...