Не уверен, что это именно то, что вы имели в виду, но если вы укажете поле Parameter с кавычками вокруг некоторых аргументов, они будут рассматриваться как один, например ::
# Parameter field in PyCharm: -c "1 2" -f filename.txt
>>> sys.argv[1:]
['-c', '1 2', '-f', 'filename.txt'] # 1 and 2 together in the same string
Обратите внимание, однако, что ArgumentParser
будет ожидать все аргументы отдельно, даже если вы передадите nargs='+'
или nargs='*'
в add_argument()
. Итак, если вы используете класс ArgumentParser
, вы, вероятно, не хотите использовать кавычки:
# Parameter field in PyCharm: -c 1 2 -f filename
>>> sys.argv[1:]
['-c', '1', '2', '-f', 'filename.txt']
Более или менее то, что класс ArgumentParser
будет делать с nargs='+'
или nargs='*'
:
- Начать сканирование аргументов один за другим слева направо
- Как только он находит ключевое слово, которое он распознает (например,
-c
), он будет использовать все последующие аргументы, пока не достигнет другого распознаваемого ключевого слова (например, -f
) или конца списка
- Все те промежуточные аргументы, которые он найдет, будут помещены в список и связаны с первым аргументом (например,
-c
)
Даже если вы не используете класс ArgumentParser
и у вас есть собственный код для разбора, я бы предложил принять аналогичную стратегию разбора. Это, вероятно, более интуитивно понятно для пользователей скрипта, плюс вам не нужно будет разбивать аргументы вручную в какой-то момент позже (например, '1 2'.split()
).