Я хотел бы иметь аргумент для моей программы, который имеет некоторые обязательные параметры наряду с некоторыми необязательными параметрами.Примерно так:
[--print text [color [size]]
, чтобы вы могли передать его любому из них:
mycommand --print hello
mycommand --print hello blue
mycommand --print hello red 12
Их может быть несколько, поэтому это должен быть один add_argument.Например:
[--print text [color]] [--output filename [overwrite]]
Я могу получить аргументы, близкие к тому, что я хочу:
>>> parser = argparse.ArgumentParser()
>>> act = parser.add_argument('--foo', nargs=3, metavar=('x','y','z'))
>>> act = parser.add_argument('--bar', nargs='?')
>>> act = parser.add_argument('--baz', nargs='*')
>>> parser.print_help()
usage: [-h] [--foo x y z] [--bar [BAR]] [--baz [BAZ [BAZ ...]]]
optional arguments:
-h, --help show this help message and exit
--foo x y z
--bar [BAR]
--baz [BAZ [BAZ ...]]
, но не совсем.Есть ли способ сделать это с argparse?Я знаю, что могу сделать их все nargs="*"
, но тогда --help не будет перечислять имена необязательных аргументов.Если я передаю nargs="*"
и кортеж для metavar, argparse выдает исключение.