Python:不要用argparse显示"选择"

Ric*_*son 4 python parameters argparse

使用argparse,我有以下行:

parser.add_argument("-p", "--parameter", type=str, default=None, nargs='+',
                        help="some option",
                        choices=allValues.keys()
                        )
Run Code Online (Sandbox Code Playgroud)

结果help消息显示以下所有值allValues:

-p {a,b,c,d,e,f,g,h,i,l,m; a,b,c,d,e,f,g,h,i,l,m} [{a,b,c,d,e,f,g,h,i,l,m} ...] , - 参数{a,b,c,d,e,f,g,h,i,l,m; a,b,c,d,e,f,g,h,i,l,m} [{a,b,c,d,e,f,g,h,i,l,m; a,b,c,d,e,f,g,h,i,l,m} ...]某种选择

可以 {a ,b ,c , d, e, f, g, h, i, l, m; a ,b ,c , d, e, f, g, h, i, l, m}从上面删除,只显示参数的名称帮助信息吗?

Set*_*ton 9

使用metavar参数::

parser.add_argument("-p", "--parameter", type=str, default=None, nargs='+',
                    help="some option",
                    choices=allValues.keys(),
                    metavar='PARAMETER'
                    )
Run Code Online (Sandbox Code Playgroud)

这会给::

-p PARAMETER, --parameter PARAMETER some option
Run Code Online (Sandbox Code Playgroud)

如果您不想显示元变量,可以考虑传递''metavar.否则,我相信你必须创建自己的自定义格式化程序类并将其传递给ArgumentParser.