看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了调用。RawTextHelpFormatterwrapsplitlines()