我想为我的程序提供一个参数,其中包含一些必需参数和一些可选参数。像这样的东西:
[--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="*"
一个元组元组,argparse 会引发异常。