当我为 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
消息)吗?
您不必覆盖完整的
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)