#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 '])