你可以创建一个格式化类,以你想要的任何方式格式化参数。这并不是完全直接的,但是以下是一个能够生成如下输出的示例(假设@mgilson正确地认为你只想为一组命令名称显示一次元变量...否则,只需指定一个实际的
metavar ='value'
即可精确地显示该文本。):
# without metavar specified:
-c, --chunksize CHUNKSIZE
chunk size in bits
# with metavar specified:
-c, --chunksize some_metavar
chunk size in bits
以下是该类的代码以及产生两个输出的方式:
import argparse
class SingleMetavarHelpFormatter(argparse.HelpFormatter):
def _format_action_invocation(self, action):
if not action.option_strings:
metavar, = self._metavar_formatter(action, action.dest)(1)
return metavar
else:
parts = []
if action.nargs == 0:
parts.extend(action.option_strings)
else:
default = action.dest.upper()
args_string = self._format_args(action, default)
parts.extend(action.option_strings)
parts[-1] += ' %s' % args_string
return ', '.join(parts)
parser = argparse.ArgumentParser(
prog='PROG',
formatter_class=SingleMetavarHelpFormatter
)
parser.add_argument('-c', '--chunksize', type=int, help='no metavar specified')
parser.add_argument('-w', '--with_metavar', type=int, help='metavar specified', metavar='some_metavar')
parser.print_help()
编辑:
如果不想显示元变量(metavar),可以将空字符串传递给metavar参数:
parser.add_argument('-e', '--with_empty_metavar', type=int, help='empty metavar specified', metavar='')
使用原始类和新类的区别在于短命令语法后面缺少额外的空格字符。
#usage: PROG [-h] [-c CHUNKSIZE] [-w some_metavar] [-e]
#
#optional arguments:
# -h, --help show this help message and exit
# -c CHUNKSIZE, --chunksize CHUNKSIZE
# no metavar specified
# -w some_metavar, --with_metavar some_metavar
# metavar specified
# -e, --with_empty_metavar
# empty metavar specified
argparse.SUPPRESS
可能会起作用,但显然不是这样... - mgilson-c chunksize, --chunksize chunksize
代替-c CHUNKSIZE, --chunkesize CHUNKSIZE
?那么metavar = ('chunksize')
就可以实现。对于该参数不需要任何帮助行吗?使用help=argparse.SUPPRESS
。 - Nisan.H-c,--chunksize ______ 按比特计算的块大小
。 - mgilson