我已经使用argparse
定义了我的程序的命令行界面,我想通过epilog提供一些示例。默认情况下,argparse
模块会删除额外的空格,包装描述文本等。此默认行为对于程序的描述和参数组描述非常有用,但对于epilog我想要提供解析器不应修改的预格式化字符串。如果我指定formatter_class=RawDescriptionHelpFormatter
,这将为epilog提供所需的行为,但我失去了我依赖的程序和参数组描述的默认行为。我可以回去手动修复这些描述的包装,但这很乏味。
有没有办法将原始格式 应用到epilog?
答案 0 :(得分:0)
此格式化工具更改了一种方法_fill_text
:
class RawDescriptionHelpFormatter(HelpFormatter):
....
def _fill_text(self, text, width, indent):
return ''.join(indent + line for line in text.splitlines(keepends=True))
这会处理text
方法中定义为format_help
的任何内容的换行
def format_help(self):
formatter = self._get_formatter()
# 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()
即description
,group.description
和epilog
。
我可以想象创建一个替代的Formatter子类,它只改变了epilog的包装(可能由一些关键词识别)。但我会把它作为读者的练习。 :)