python argparse:如果提供了选择attr,则参数名称不会显示在帮助菜单中

时间:2018-02-21 19:04:09

标签: python argparse

在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

这一定很简单......有人可以告诉我哪里出错了吗?

1 个答案:

答案 0 :(得分:0)

尽管您自己回答了问题,但我想在此处突出显示答案,以使其他人可以轻松找到它。 您可以使用metavarhttps://docs.python.org/3/library/argparse.html#metavar)关键字来对参数解析器说,这是参数的名称,如果您键入--help,它将显示出来。 默认情况下,如果您未指定name or flagshttps://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.add_argument)以外的任何名称,它将显示该名称只是因为它没有其他显示方式。