N-й аргумент по умолчанию с Python ArgumentParser - PullRequest
0 голосов
/ 27 января 2020

Я хотел бы создать программу python, которая может принимать флаг --add с 2 или 3 аргументами.

./script.py --add a 1
./script.py --add a 2 c

Есть ли способ установить nargs в ArgumentParser равным 2 или 3, и, если есть только 2 аргумента, установить 3-е значение на a? Я знаю, что есть опция +, но когда я использую это:

  • , я не могу установить metavar для 3 аргументов (metavar = ("First", "Second", "Third")) из-за:

ValueError: длина кортежа metavar не совпадает с nargs

  • Я должен сделать свою собственную проверку аргументов (пользователь может ввести 30 аргументов или только 1 аргумент),
  • Я должен вручную разобрать аргументы для требуемых типов,
  • Мне нужно вручную установить значение 3-го аргумента по умолчанию, если он не существует.

Вот мой текущий код:

from argparse import ArgumentParser

parser = ArgumentParser()
parser.add_argument("-a", "--add", nargs = "+", metavar = ("First", "Second"))
args = parser.parse_args()
print(args)

Программа печатает аргументы:

./script.py --add a 2
# Namespace(add=['a', '2'])
# Second argument should be number, not a string.
# Third argument should be 'a' (default value if 3rd value is not entered).

./script.py --help
# ... -a First [Second ...], --add First [Second ...] ...
# There should be also label for 3rd arg like that: --add First [Second [Third]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...