J'ai écrit une fonction qui accepte jusqu'à 4 options et 2 arguments. Les options sont -1, -2, -3 et -u. Par défaut, leurs valeurs sont définies sur true, true, true et false, respectivement, mais l'activation de l'une des options provoque le basculement de cette valeur. Le problème est, même quand je spécifie, disons,Python optparse n'accepte pas les options
python comm.py -1 -2 -u test test2
et d'imprimer les valeurs de l'option, ils montrent toujours les valeurs par défaut. Voici la partie pertinente de mon code:
...
...
...
parser.add_option("-1", action="store_false", dest="xcol1", default=True, help="...")
parser.add_option("-2", action="store_false", dest="xcol2", default=True, help="...")
parser.add_option("-3", action="store_false", dest="dups", default=True, help="...")
parser.add_option("-u", action="store_true", dest="donotsort", default=False, help="...")
options, args = parser.parse_args(sys.argv[2:])
xcol1=options.xcol1
xcol2=options.xcol2
dups=options.dups
donotsort=options.donotsort
print "xcol1:"
print xcol1
print "xcol 2:"
print xcol2
print "dups:"
print dups
print "donotsort:"
print donotsort
print args
...
...
...
L'exécution de la commande aformentioned avec la sortie volonté de code ci-dessus:
vrai
Faux
vrai
vrai
test, test2
c'est-à-dire les valeurs par défaut. Il devrait vraiment sortir "Faux, Faux, Vrai, Vrai, ...), puisque les options 1, 2, et vous sont activées" Qu'est-ce que je fais mal? Est-ce quelque chose à voir avec l'analyseur, parce que je ne suis pas . 100% sûr que je suis en utilisant l'analyseur correctement
de plus, lorsque je liste les options comme -12u
au lieu de -1 -2 -u
, il se comporte différemment - les valeurs booléennes sont différentes
Pourquoi cela fonctionnerait-il comme prévu? Vous avez fait '-12u' au lieu de' -1 -2 -u' – Navith
Ok, je l'ai changé en -1 -2 -u et maintenant la sortie est True, False, True, True - cependant, la première option devrait être False . En outre, je pensais que les espaces entre les options séparées n'était pas nécessaire – gallardoelise
Modifier 'sys.argv [2:]' à 'sys.argv [1:]' – Navith