Множественный аргумент в python argparse

#python #argparse

#питон #argparse

Вопрос:

Я хочу, чтобы мой скрипт принимал несколько аргументов с одним и тем же именем.

 python3 script.py --test test1 --test test2 --test test3 --config config_path  

Как я могу этого достичь? Я пробовал nargs с argparse до сих пор.

 # My Solution import argparse  parser = argparse.ArgumentParser(description='Arg Parser',  formatter_class=argparse.ArgumentDefaultsHelpFormatter,  allow_abbrev=False)  parser.add_argument('--test', nargs=' ', required=True,   help='Modules name for sanity check', choices=['test1 ', 'test2 ', 'test3 '])  parser.add_argument('--config')  arg = parser.parse_args()  

Но его поведение немного отличается, оно принимает форму

 python3 script.py --test test1 test2 --config config_path  

Любые предложения о том, как добиться желаемого поведения

Комментарии:

1. Есть значение действия «добавить». Проверьте документы.

2. Спасибо @hpaulj append работает, но я вижу, что test=[['train1'], ['train2']]) это ожидаемое поведение.

3. Что у тебя nargs ? «добавить» создает список, нарги могут добавить еще один слой.

4. Я вижу тебя, я использовал nargs=' ' то, что вызывало такое поведение. Удаление этого помогло мне решить проблему. Это было большим подспорьем.

Ответ №1:

Это должно быть прямо из комментариев @hpaulj, добавляющих код на всякий случай

 parser.add_argument('--test', action='append', required=True,   choices=['test1 ', 'test2 ', 'test3 '])