如何在argparse中更改nargs = *的metavar值?

时间:2018-07-06 08:20:09

标签: python python-3.x command-line-arguments argparse

我想将帮助消息中-args选项后面的值更改为“ arg1 arg2 ..”,而不是“ [arg [arg ...]]”。

我尝试更改metavar值,但它只会将输出更改为“ [[arg1 arg2 ... [arg1 arg2 ... ...]]]”。

这是我的代码:-

arg_parser.add_argument('-args', action='store', default=None, nargs='*' ,dest='arg',
                        help = "arguments passed to the program.")  

,确切的输出是:-
-args [arg [arg ...]] arguments passed to the program.

我想要的输出:-
-args [arg1 arg2 ..] arguments passed to the program

2 个答案:

答案 0 :(得分:0)

您可以通过删除args使-成为位置参数,而不是可选参数:

parser.add_argument('args', nargs='*',
    help = "[arg1 arg2 ..] arguments passed to the program.")  

由于您的nargs设置为*,因此在何时可以成功处理命令行方面,这实际上并没有任何改变。

不显示位置参数的可选值([arg [arg ...]])列表,仅显示名称。如上使用help来输入您的自定义文本,然后得到您想要的东西:

positional arguments:  
  args        [arg1 arg2 ..] arguments passed to the program.

答案 1 :(得分:0)

使用元组'metavar =('arg1','arg2')'应该显示

new Array(…)

[]和...固定为'*'。 “ nargs = 2”产生的显示更简单。

除此之外,您还必须将Formater子类化并进行手术。