python argparse help message, disable metavar for short options?

谁都会走 提交于 2019-11-27 15:17:59
hpaulj

Don't show long options twice in print_help() from argparse

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.

Here also argparse help without duplicate ALLCAPS

and How do I avoid the capital placeholders in python's argparse module?

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)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!