2013-04-20 41 views
0

我想讓我的幫助字符串有幫助。要做到這一點,我有一個文檔字符串類似從多行上的optparse幫助字符串換行的文本

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

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

""" 

已經做到了這一點,我認爲一個功能Function()有這樣的事情,在與-h或調用程序時出現

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) 

麻煩的結束--help輸出是由OptParse包裝的,這意味着KeyWord參數不會在新行上開始,是否可以停止OptParse包裝輸出或者有更好的方法來做到這一點?

+3

[optparse is deprecated](http://docs.python.org/2.7/library/optparse),你應該考慮使用[argparse](http://docs.python.org/2.7/library/argparse)而不是 – mata 2013-04-20 17:05:55

+1

argparse提供相同的行爲 – 2013-04-20 17:14:47

+2

查看'optparse'的源代碼,答案似乎是否定的,除非你破解(例如通過重寫一些內部方法)。 – 2013-04-21 10:19:48

回答

-1

argparse爲您提供了原始格式格式化,即你的行不會得到包裹 解析器= argparse.ArgumentParser(formatter_class = argparse.RawDescriptionHelpFormatter)

optparse,您還可以設置格式化..我想你可以寫你自己的格式化程序,但沒有提供我知道的

0

如果有興趣,我已經寫了兩個這樣的格式化類argparse。第一個支持多MediaWiki的,降價和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 Attribution-Share-alike。它們格式爲ANSI終端 接口。沒有高度拋光(例如,自動編號未完成),但您可能會發現它們很有用。