看Lib/optparse.py
文件。
class HelpFormatter
def format_option
...
if option.help:
help_text = self.expand_default(option)
help_lines = textwrap.wrap(help_text, self.help_width)
result.append("%*s%s\n" % (indent_first, "", help_lines[0]))
result.extend(["%*s%s\n" % (self.help_position, "", line)
for line in help_lines[1:]])
换句话说,您的help
字符串是通过textwrap.wrap
. 对该函数的快速测试表明它删除了嵌入\n
的,并在它认为合适的时候分割了行。
与 一样argparse
,您可以通过子类化HelpFormatter
和重写所选方法(例如此方法)来自定义帮助。例如,您可能会通过将该textwrap
调用替换为help_lines = help_text.splitlines()
. 您松开了自动包装,但可以控制帮助的外观。
OptionParser
接受一个formatter
参数。 IndentedHelpFormatter
是自定义格式化程序类的示例。
,类就做了这样的改变,用 . 替换argparse
了调用。RawTextHelpFormatter
wrap
splitlines()