python argparse帮助消息,为短选项禁用metavar吗? [英] python argparse help message, disable metavar for short options?

查看:59
本文介绍了python argparse帮助消息,为短选项禁用metavar吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想构造一个如下所示的argparser帮助消息:

I want to construct a argparser help message that looks like:

-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

我只想知道如何摆脱长短期权之间的矛盾.

I just want to know how to get rid of the things in between short and long options.

推荐答案

不要在argparse的print_help()中两次显示长选项

本质上是同一件事.如果您不打算编写自己的HelpFormatter子类(可能需要更改一种方法),则需要使用现有的格式化工具-帮助,元变量和描述.

asks essentially the same thing. If you are not up to writing your own HelpFormatter subclass (it probably needs to change one method), you need to play with the existing formatting tools - help, metavar, and description.

这里无需重复的ALLCAPS的精简帮助

如何避免在python的argparse模块中使用大写占位符?

对于这个88275023问题,我制定了(但未发布)此Formatter类.变化快要结束了

For that 88275023 question I worked out (but didn't post) this Formatter class. The change is near the end

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)

这篇关于python argparse帮助消息,为短选项禁用metavar吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆