如何更改 argparse 中 nargs=* 的元变量值?

How to change the metavar value for nargs=* in argparse?

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

我试过更改元变量值,但它只会将输出更改为“[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

您可以通过删除 -:

使 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.

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

[arg1 ... [arg2 ...]]

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

除此之外,您必须继承 Formater 并进行手术。