2009-05-19 4 views
3

私はPythonコードで、ここにあるような可変引数のコールバックを実装しています:
hxxp://docs.python.orgこのようなオプションを追加するOptparse:変数argコールバックアクションでの使用で余分なパラメータが必要であることを示していません

/library/optparse.html#callback-example-6-variable-arguments:

parser.add_option("-c", "--callback", dest="vararg_attr", action="callback", callback=vararg_callback) 

問題は、オプションが余分に必要とするユーザーのための兆候がないこと、です入力:

Options: 
    -h, --help  show this help message and exit 
    -c, --callback 

は、使用のようなものを印刷するように、optparseはの使用方法を変更する方法はあります:あなたの助けを

-c=LIST, --callback=LIST 

ありがとう!
ベン

答えて

2

これはmonkeypatchingを伴い、最善の解決策ではないかもしれません。一方、それは動作するようです。

from optparse import OptionParser, Option 

# Complete hack. 
Option.ALWAYS_TYPED_ACTIONS += ('callback',) 

def dostuff(*a): 
    pass 

parser = OptionParser() 
parser.add_option("-c", 
        "--callback", 
        dest="filename", 
        action="callback", 
        callback=dostuff, 
        metavar='LIST', 
        help='do stuff', 
       ) 

(options, args) = parser.parse_args() 

出力:タイプはなし(デフォルト)がない場合

Usage: opt.py [options] 

Options: 
    -h, --help   show this help message and exit 
    -c LIST, --callback=LIST 
         do stuff 
+0

ありがとう!これは私にとってうまくいくはずです。 –

1

ユーザーmetavarキーワード引数:

parser.add_option("-c", "--callback", dest="vararg_attr", action="callback", callback=vararg_callback, metavar='LIST') 

参考:http://docs.python.org/library/optparse.html

+1

おかげで、私はすでにこれを試み、それが動作しませんでした... –

0

optparseは追加の引数のための指示を表示しません。あなたは型を指定し、それが助けに表示されているmetavar場合:

parser.add_option("-c", "--callback", 
        dest="vararg_attr", 
        type="string", 
        metavar="LIST", 
        action="callback", 
        callback=vararg_callback, 
        help="do stuff") 

出力:

Options: 
    -h, --help   show this help message and exit 
    -c LIST, --callback=LIST 
         do stuff 
関連する問題