我有以下参数分析器配置,通过它我定义了'-config'参数:
# Initialize the Argument Parser
clArgsParser = argparse.ArgumentParser (
description = __program__.description,
epilog = __program__.epilog,
formatter_class = argparse.RawDescriptionHelpFormatter
)
# Define '--config' argument
clArgsParser.add_argument (
'-c', '--config',
help = "Path to the Program's Configuration file.",
type = str,
action = 'store',
dest = 'programConfigPath' # Store the argument value into the variable 'programConfigPath'
)
一旦执行了带有此代码的程序,并且我在CL接口中键入--help
,就会为"--config"参数打印出以下用法文本:
optional arguments:
-c PROGRAMCONFIGPATH, --config PROGRAMCONFIGPATH
但是,我不希望PROGRAMCONFIGPATH
被打印出来,而是希望<PROGRAM_CONFIG_PATH>
被打印出来。总结如下:
Now: -c PROGRAMCONFIGPATH, --config PROGRAMCONFIGPATH
Shall be: -c <PROGRAM_CONFIG_PATH>, --config <PROGRAM_CONFIG_PATH>
如何在不更改存储CL Argument参数的变量名称的情况下做到这一点:dest = 'programConfigPath'
当ArgumentParser生成帮助消息时,它需要某种方式来引用每个期望的参数。可以使用metavar选项指定预期参数的替代名称,该选项将覆盖帮助消息中的默认预期参数。
例如,要将PROGRAMCONFIGPATH
更改为<PROGRAM_CONFIG_PATH>
,必须在ArgumentParser
中添加以下选项
metavar='<PROGRAM_CONFIG_PATH>'
此代码:
# Define '--config' argument
clArgsParser.add_argument (
'-c', '--config',
help = "Path to the Program's Configuration file in the JSON format (e.g. 'ProgramConfig.json').",
type = str,
action = 'store',
dest = 'programConfigPath', # Store the argument value into the variable 'programConfigPath'
metavar='<PROGRAM_CONFIG_PATH>' # Specify alternative name in the helper (usage) section
)
将产生以下输出:
options:
-c <PROGRAM_CONFIG_PATH>, --config <PROGRAM_CONFIG_PATH>
注意,metavar
只更改显示的名称-parse_args()
对象上的属性名称仍然由dest
值决定,在我们的情况下为dest = 'programConfigPath'