2009-05-19 7 views
3

J'ai implémenté dans mon code python un rappel pour les arguments variables similaire à ce qui peut être trouvé ici:
hxxp: //docs.python.org /library/optparse.html#callback-example-6-variable-argumentsOptparse: L'utilisation de l'action de rappel d'argument variable n'indique pas que des paramètres supplémentaires sont nécessaires

Ajout de l'option comme ceci:

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

le problème est qu'il n'y a pas d'indication pour l'utilisateur que l'option nécessite supplémentaire entrée:

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

Est-il possible de changer l'utilisation de optparse afin que l'utilisation imprimera quelque chose comme:

-c=LIST, --callback=LIST 

Merci pour votre aide!
Ben

Répondre

2

Cela implique monkeypatching et pourrait ne pas être la meilleure solution. D'un autre côté, cela semble fonctionner.

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

Sortie:

Usage: opt.py [options] 

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

Merci! Cela devrait fonctionner correctement pour moi. –

1

utilisateur l'argument mot-clé metavar:

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

Référence: http://docs.python.org/library/optparse.html

+1

Merci, mais je l'ai déjà essayé cela et ça n'a pas marché ... –

0

optparse ne montre pas l'indication d'un argument supplémentaire si le type est Aucun (par défaut). Si vous spécifiez le type et metavar il est affiché dans l'aide:

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

sortie:

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