2012-07-16 42 views
2

使用optparse我遇到了這個錯誤,我不知道發生了什麼,文檔沒有幫助我澄清爲什麼會發生這種情況。set_default上的OptionParser錯誤

代碼:

formats = ['xml', 'json', 'yaml'] 
parser = optparse.OptionParser(usage = u, version = v) 
parser.add_option('-s', '--src', dest = 'source_file', metavar = 'single source file') 
parser.add_option('-f', '--format', dest = 'frmt', type = 'choice', choices = formats) 
parser.add_option('-o', '--output', dest = 'output_file') 

parser.set_default(frmt = 'xml', output_file = 'doc.xml') 
opts, args = parser.parse_args() 

gen_doc(opts.source_file, opts.frmt, opts.output_file) 

錯誤:

$ python main.py -s a -f xml -o a 
Traceback (most recent call last): 
    File "main.py", line 35, in <module> 
    main() 
    File "main.py", line 29, in main 
    parser.set_default(frmt = 'xml', output_file = 'doc.xml') 
TypeError: set_default() got an unexpected keyword argument 'frmt' 

據我所知set_default應認識到add_option設置的實例成員。

任何想法?

回答

2

該方法是set_defaults;注意複數。 (單數)set_default需要兩個參數;選項的名稱及其值。

+0

該錯誤消息完全是誤導性的,或根本不會根據您的更新。 – loki 2012-07-16 08:28:58