【问题标题】:How to change the metavar value for nargs=* in argparse?如何更改 argparse 中 nargs=* 的元变量值?
【发布时间】:2023-04-09 05:16:01
【问题描述】:

我想将帮助消息中 -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

【问题讨论】:

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


    【解决方案1】:

    您可以通过删除- 使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.
    

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2016-11-01
        • 1970-01-01
        • 2021-09-02
        • 1970-01-01
        • 2014-10-11
        • 1970-01-01
        • 2017-08-20
        • 2023-01-22
        • 1970-01-01
        相关资源
        最近更新 更多