我可以让 argparse 在两个选项名称之后不重复参数指示吗?

问题描述 投票:0回答:1

当我为 argparse 指定一个具有短名称和长名称的参数时,例如:

parser.add_argument("-m", "--min", dest="min_value", type=float, help="Minimum value")

并要求

--help
,我得到:

  -m MIN_VALUE, --min MIN_VALUE
                        Minimum value

这让我很烦恼。我希望不要重复

MIN_VALUE
。因此,例如:

  [-m | --min-value] MIN_VALUE
                        Minimum value

我可以让 argparse 打印它(除了完全覆盖

--help
消息)吗?

python command-line-arguments argparse usage-information
1个回答
0
投票

您不必覆盖完整的

help
消息,只需创建您自己的
HelpFormatter
类:

import argparse


class MyFormatter(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([f'[{" | ".join(action.option_strings)}] {args_string}']) # Customize the format here

            return " ".join(parts)

# Example usage
parser = argparse.ArgumentParser(formatter_class=MyFormatter)
© www.soinside.com 2019 - 2024. All rights reserved.