我正在使用 Python 中的 argparse
库。在某些时候,我使用一个名为 param
的参数,它接受两个参数:键和值。我使用的代码行如下:
parser.add_argument("-p", "--param", nargs=2, action="append",
help="key and value for query",
type=str, metavar="key value"
)
这里的问题是当我调用帮助时,它显示为:
optional arguments:
-h, --help show this help message and exit
-p key value key value, --param key value key value
key and value for query parameters
“key value”这个名称重复了两次。我尝试使用列表和生成器,但我找到的唯一方法是创建一个包含不同值的小类,并在要求__str__
时产生它们,就像这样:
class Meta:
def __init__(self, iterable):
self.gene = itertools.cycle(iterable)
def __str__(self):
return self.gene.__next__()
我这样调用add_argument
:
parser.add_argument("-p", "--param", nargs=2, action="append",
help="key and value for query parameters",
type=str, metavar=Meta(["key", "value"])
)
而且它显示得很正常:
-p key value, --param key value
key and value for query parameters
但我觉得使用临时类 Meta
很丑陋,而且我感觉一定有其他(更好的)方法可以做到这一点。我这样做对吗?
action="append"
是什么作用? - alperaction="append"
是什么作用? - undefinedaction="append"
将元素存储在列表中。https://docs.python.org/3/library/argparse.html#action - Thibault D.