我想构建一个argparser帮助消息,如下所示:
-i, --input=INPUT help for input
-o, --output=output help for output
我目前的代码:
arg_parser = argparse.ArgumentParser
arg_parser.add_argument('-i', '--input', dest='input', metavar='=INPUT', help='help for input')
arg_parser.add_argument('-o', '--output', dest='output', metavar='=OUTPUT', help='help for output')
arg_parser.print_help()
给了我
-i =INPUT, --input =INPUT help for input
-o =INPUT, --output =output help for output
我只是想知道如何摆脱短期和长期期权之间的事情。
答案 0 :(得分:5)
Don't show long options twice in print_help() from argparse
基本上要求同样的事情。如果您不打算编写自己的HelpFormatter子类(可能需要更改一个方法),则需要使用现有的格式化工具 - help,metavar和description。
这里也是 argparse help without duplicate ALLCAPS
和 How do I avoid the capital placeholders in python's argparse module?
对于那个88275023问题,我解决了这个Formatter类(但没有发布)。变化接近尾声
class CustomFormatter(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 the Optional doesn't take a value, format is:
# -s, --long
if action.nargs == 0:
parts.extend(action.option_strings)
# if the Optional takes a value, format is:
# -s ARGS, --long ARGS
# change to
# -s, --long ARGS
else:
default = action.dest.upper()
args_string = self._format_args(action, default)
for option_string in action.option_strings:
#parts.append('%s %s' % (option_string, args_string))
parts.append('%s' % option_string)
parts[-1] += ' %s'%args_string
return ', '.join(parts)
答案 1 :(得分:3)
如接受答案的评论中所述,以下参数对我来说足够了。
metavar='\b'