在python 3.6中使用argparse时,我注意到如果我在添加其中一个参数时提供'choices'attr,那么在该参数的帮助菜单部分中,选项列表会显示而不是参数的名称。
使用此stackoverflow回答Python argparse: Lots of choices results in ugly help output,我发现使用'metavar'和'numargs'attrs来 尝试清理帮助菜单。虽然这摆脱了显示为哈希的丑陋选择,但该选项的名称仍未显示在帮助中。
示例...
此:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("works", type=int,
help="Shows up properly")
parser.add_argument("nope", type=int, choices=[1,2,3],
help="foobared")
parser.add_argument("nope2", type=int, choices=[1,2,3], nargs='?', metavar='',
help="still foobared")
parser.add_argument("why", type=int,
help="help me")
parser.parse_args()
此帮助输出中的结果:
$ python myparser.py --help
usage: myparser.py [-h] works {1,2,3} why
positional arguments:
works Shows up properly
{1,2,3} foobared
still foobared
why help me
optional arguments:
-h, --help show this help message and exit
这一定很简单......有人可以告诉我哪里出错了吗?
答案 0 :(得分:0)
尽管您自己回答了问题,但我想在此处突出显示答案,以使其他人可以轻松找到它。
您可以使用metavar
(https://docs.python.org/3/library/argparse.html#metavar)关键字来对参数解析器说,这是参数的名称,如果您键入--help
,它将显示出来。
默认情况下,如果您未指定name or flags
(https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.add_argument)以外的任何名称,它将显示该名称只是因为它没有其他显示方式。