从多行上的optparse帮助字符串进行文本换行

时间:2013-04-20 16:30:09

标签: python optparse

我正在尝试让我的帮助字符串有用。为此,我有一个函数Function(),其文档字符串类似于

def Function(x):
""" First line describing what Function does

Keyword Arguments
x = float -- A description of what x does that may be long

"""

完成这项工作后,我认为最后有这样的事情

def parse_command_line(argvs):

    parser = optparse.OptionParser()

    parser.add_option("-f","--Function", help=Function.__doc__,metavar="Bs" )

    (options,arguments) = parser.parse_args(argvs)
    return options, arguments

options, arguments = parse_command_line(sys.argv)

使用-h--help调用程序时出现问题输出由OptParse行换行,这意味着KeyWord参数不是在新行上启动的,是否可以阻止OptParse包装输出还是有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

如果有兴趣,我已经为argparse写了两个这样的格式化程序类。第一个支持mediaWiki,MarkDown和POD语法的大部分(甚至混合):

import MarkupHelpFormatter
MarkupHelpFormatter.InputOptions["mediawiki"] = True
parser = argparse.ArgumentParser(
    description="""...your text, with mediawiki markup...""",
    epilog='...',
    formatter_class=MarkupHelpFormatter.MarkupHelpFormatter
)

另一个名为" ParagraphHelpFormatter"。它只是包装文本,如默认的argparse格式化程序,除了它尊重空行。

两者都在http://derose.net/steve/utilities/PY/MarkupHelpFormatter.py,和 获得CCLI署名 - 同等许可。它们格式为ANSI终端 接口。没有高度抛光(例如,自动编号未完成),但您可能会发现它们很有帮助。

答案 1 :(得分:-1)

argparse为您提供原始格式的格式化程序,即您的行不会被包装 parser = argparse.ArgumentParser(formatter_class = argparse.RawDescriptionHelpFormatter)

optparse还允许你设置格式化程序..我想你可以编写自己的格式化程序,但是没有提供我知道的