2009-08-10 50 views
41

有沒有辦法讓python的optparse在使用--help顯示幫助時打印選項或標誌的默認值?Python的optparse可以顯示選項的默認值嗎?

+0

看到這個:http://stackoverflow.com/questions/12151306/argparse-way-to-include-default-values-in-help – 2014-01-16 09:26:18

+0

如果有人尋求相同的Argparse:[Argparse:包括的方式'--help'中的默認值?](http://stackoverflow.com/a/12151325/562769) – 2014-02-24 07:48:37

回答

54

嘗試使用%default字符串佔位符:

# This example taken from http://docs.python.org/library/optparse.html#generating-help 
parser.add_option("-m", "--mode", 
        default="intermediate", 
        help="interaction mode: novice, intermediate, " 
         "or expert [default: %default]") 
7

如果您需要將默認值的編程訪問,您可以通過解析器的defaults屬性得到他們(這是一個字典)

7

如果您想要將默認值自動添加到您指定的所有選項中,則可以執行以下操作:

for option in parser.option_list: 
    if option.default != ("NO", "DEFAULT"): 
     option.help += (" " if option.help else "") + "[default: %default]" 
0

The co對你的問題的評論已經表明有另一種方法來解析名爲argparse的參數。它已經在Python 3.2中引入。它實際上棄用optparse,但使用類似。

argpass帶有不同的格式化類,例如argparse.ArgumentDefaultsHelpFormatter也會打印默認值,而無需手動操作幫助字符串。

參數Parser對象允許通過指定替代格式化類的 自定義幫助格式。目前,有四個 這樣的類:

類argparse.RawDescriptionHelpFormatter

類argparse.RawTextHelpFormatter

類argparse.ArgumentDefaultsHelpFormatter

類argparse.MetavarTypeHelpFormatter

從一個例子python文檔:

>>> parser = argparse.ArgumentParser(
...  prog='PROG', 
...  formatter_class=argparse.ArgumentDefaultsHelpFormatter) 
>>> parser.add_argument('--foo', type=int, default=42, help='FOO!') 
>>> parser.add_argument('bar', nargs='*', default=[1, 2, 3], help='BAR!') 
>>> parser.print_help() 
usage: PROG [-h] [--foo FOO] [bar [bar ...]] 

positional arguments: 
bar   BAR! (default: [1, 2, 3]) 

optional arguments: 
-h, --help show this help message and exit 
--foo FOO FOO! (default: 42) 

argparse formatting classes

0

從文檔添加argparse.ArgumentDefaultsHelpFormatter到您的解析器

import argparse 

    parser = argparse.ArgumentParser(
    description='Your application description', 
    formatter_class=argparse.ArgumentDefaultsHelpFormatter) 

ArgumentDefaultsHelpFormatter會自動將有關 默認值,每個參數的幫助信息: Blockquote