2009-05-19 4 views
3

Ich habe in meinem Python-Code einen Rückruf für variable Argumente ähnlich dem, was hier gefunden werden kann:
hxxp: //docs.python.org /library/optparse.html#callback-example-6-variable-argumentsOptParse: Verwendung auf Variable Arg Callback-Aktion zeigt nicht an, dass zusätzliche Parameter benötigt werden

die Option wie folgt hinzu:

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

das Problem ist, dass es keine Anzeige für den Benutzer, dass die Option zusätzliche erfordert Eingabe:

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

Gibt es eine Möglichkeit optparse die Nutzung zu ändern, so dass die Verwendung so etwas wie gedruckt wird:

-c=LIST, --callback=LIST 

Vielen Dank für Ihre Hilfe!
Ben

Antwort

2

Dies beinhaltet monkeypatching und vielleicht nicht die beste Lösung sein. Auf der anderen Seite scheint es zu funktionieren.

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() 

Output:

Usage: opt.py [options] 

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

Dank! Das sollte für mich gut funktionieren. –

1

Benutzer das metavar Schlüsselwort-Argument:

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

Referenz: http://docs.python.org/library/optparse.html

+1

Danke, aber ich dies bereits versucht, und es hat nicht funktioniert ... –

0

optparse nicht für ein zusätzliches Argument die Anzeige anzeigt, wenn der Typ None (default) ist. Wenn Sie Typen angeben und metavar es in der Hilfe angezeigt wird:

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

Ausgang:

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