Я хотел бы создать программу 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]]