La argparse
documentation est raisonnablement bonne mais laisse de côté quelques détails utiles qui pourraient ne pas être évidents. (@Diego Navarro a déjà mentionné une partie de cela, mais je vais essayer de développer légèrement sa réponse.) L'utilisation de base est la suivante:
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--my-foo', default='foobar')
parser.add_argument('-b', '--bar-value', default=3.14)
args = parser.parse_args()
L'objet dont vous récupérez parse_args()
est un objet 'Namespace': un objet dont les variables membres sont nommées d'après vos arguments de ligne de commande. L' Namespace
objet est la façon dont vous accédez à vos arguments et aux valeurs qui leur sont associées:
args = parser.parse_args()
print args.my_foo
print args.bar_value
(Notez que argparse
remplace «-» dans vos noms d'argument par des traits de soulignement lors du nommage des variables.)
Dans de nombreuses situations, vous souhaiterez peut-être utiliser des arguments simplement comme des indicateurs qui ne prennent aucune valeur. Vous pouvez ajouter ceux-ci dans argparse comme ceci:
parser.add_argument('--foo', action='store_true')
parser.add_argument('--no-foo', action='store_false')
Ce qui précède créera des variables nommées 'foo' avec la valeur True et 'no_foo' avec la valeur False, respectivement:
if (args.foo):
print "foo is true"
if (args.no_foo is False):
print "nofoo is false"
Notez également que vous pouvez utiliser l'option "requis" lors de l'ajout d'un argument:
parser.add_argument('-o', '--output', required=True)
De cette façon, si vous omettez cet argument sur la ligne de commande, argparse
il vous dira qu'il est manquant et arrêtera l'exécution de votre script.
Enfin, notez qu'il est possible de créer une structure de dict de vos arguments en utilisant la vars
fonction, si cela vous facilite la vie.
args = parser.parse_args()
argsdict = vars(args)
print argsdict['my_foo']
print argsdict['bar_value']
Comme vous pouvez le voir, vars
renvoie un dict avec vos noms d'argument sous forme de clés et leurs valeurs sous forme de valeurs.
Il existe de nombreuses autres options et choses que vous pouvez faire, mais cela devrait couvrir les scénarios d'utilisation courants les plus essentiels.
sys.argv
l'argument que vous voulez ...