Skip to content Skip to sidebar Skip to footer

Python Argparse Help Message, Disable Metavar For Short Options?

I want to construct a argparser help message that looks like: -i, --input=INPUT help for input -o, --output=output help for output My current code: arg_parser = argparse.Argum

Solution 1:

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

classCustomFormatter(argparse.HelpFormatter):
    def_format_action_invocation(self, action):
        ifnot 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, --longif action.nargs == 0:
                parts.extend(action.option_strings)

            # if the Optional takes a value, format is:#    -s ARGS, --long ARGS# change to #    -s, --long ARGSelse:
                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)

Solution 2:

As mentioned in a comment of the accepted answer, following parameter was enough for me.

metavar='\b'

Post a Comment for "Python Argparse Help Message, Disable Metavar For Short Options?"