2017-03-03 1 views
-1

Je sais obtenir des valeurs de argsparse comme:Mec à propos de la bibliothèque argparse [python]

parser.add_argument('--volume', help='Ejecuta una aplicacion cualquiera') 

Je sais aussi si l'argument est Vrai ou faux avec ceci:

parser.add_argument('--getVolume', action='store_true', help='Ejecuta una aplicacion cualquiera') 

Mais je ne Savoir utiliser à la fois un certain temps, parce que je veux utiliser l'argument comme getter-setter. Par exemple, si je n'écris pas un numéro, le programme retourne le volume actuel et si j'écris un nombre, l'application règle ce volume sur le robot.

python app.py --volume  # Return the current volume 
python app.py --volume 80 # Set the volume to the 80% 

Merci beaucoup,

Carlos.

+0

En plus du lien, utilisez une valeur par défaut que vous pouvez ensuite décider d'afficher ou de mettre à jour le volume. –

+0

https://docs.python.org/3/library/argparse.html Regardez l'exemple 16.4.3.2 – Serenity

Répondre

0

Vous pouvez utiliser la valeur par défaut pour la vérification de set/get. Certains pseudo-code:

parser.add_argument("-v", "--vol", dest="vol", 
    help="the volume [default: %(default)s]", 
    default=None 
) 
args = parser.parse_args() 

if None == args.vol: 
    print(str(getVolume())) 
else: 
    setVolume(float(args.vol)) 
+0

Bien que cela fonctionne, il sera toujours soit obtenir ou définir. Utiliser 'nargs = '?'' Avec 'const = ...' le rendrait vraiment facultatif, si nécessaire. –

+0

Vous n'êtes pas pris en compte le cas où l'utilisateur entre '-vol' sans en spécifier de valeur. – elena

+0

ceci est un pseudo code. N'hésitez pas à le changer. Je servirais ce problème de la façon quand aucun paramètre n'est mis sur la ligne de commande le programme est en mode get. S'il y a un paramètre de volume, il est en mode de réglage –