在 argparse 中将额外的文本附加到“--help”

Append extra text to "--help" in argparse

当你运行

foo.py -h

foo.py --help,

您将收到一条 "help" 消息,说明如何使用 foo.py 以及它需要哪些参数。有什么方法可以附加到此消息吗?例如打印 __doc__?

当然,argparse 为您提供了 很多 的定制可能性。要 "append" 帮助(在帮助消息完成后打印更多信息),例如,使用 epilog 命名参数。

parser = argparse.ArgumentParser(epilog="That's all she wrote", ...)

其中 ... 代表 "whatever other named arguments you want to pass to the parser constructor",相关消息将在有关参数的帮助后打印在 --help 上。

请参阅 https://docs.python.org/3/library/argparse.html for a few thousand words about argparse (written as a reference but with lots of examples) and https://docs.python.org/3/howto/argparse.html#id1 以获取更多内容(作为教程编写)。也许这些文档中有一半是关于如何针对 --help 或错误情况微调消息的!-)

格式化帮助函数 argparse.ArgumentParser.format_help() 如下所示:

def format_help(self):
        formatter = self._get_formatter() #by default, an instance of argparse.HelpFormatter

        # usage
        formatter.add_usage(self.usage, self._actions,
                            self._mutually_exclusive_groups)

        # description
        formatter.add_text(self.description)

        # positionals, optionals and user-defined groups
        for action_group in self._action_groups:
            formatter.start_section(action_group.title)
            formatter.add_text(action_group.description)
            formatter.add_arguments(action_group._group_actions)
            formatter.end_section()

        # epilog
        formatter.add_text(self.epilog)

        # determine help from format above
        return formatter.format_help()

所以,您可以

  • 自定义使用的字符串(它们可以作为构造函数参数传递,您可能对 epilog 感兴趣),或
  • 替换默认值 HelpFormatterformatter_class 构造函数参数)以自定义如何将这些字符串转换为帮助文本