Pour ajouter des arguments aux scripts Python, vous devrez utiliser un module intégré nommé "argparse". Comme son nom l'indique, il analyse les arguments de ligne de commande utilisés lors du lancement d'un script ou d'une application Python. Ces arguments analysés sont également vérifiés par le module "argparse" pour s'assurer qu'ils sont du bon "type". Des erreurs sont générées s'il y a des valeurs invalides dans les arguments.
L'utilisation du module argparse peut être mieux comprise à travers des exemples. Vous trouverez ci-dessous quelques exemples de code qui vous permettront de démarrer avec le module argparse.
Exemple 1 : Générer un argument et un message d'aide
Considérez l'exemple de code ci-dessous :
importer argparseparser = argparse.ArgumentParser(description='Un programme de test.')
args = analyseur.parse_args()
La première instruction importe le module "argparse". Ensuite, une nouvelle instance de l'objet « ArgumentParser » est créée et une brève description du programme est fournie en tant qu'argument. L'objet ArgumentParser est nécessaire pour convertir les valeurs des arguments de la ligne de commande en types de données compris par Python. Ceci est fait par la méthode "parse_args" de l'objet ArgumentParser, comme indiqué dans la dernière instruction.
En supposant que vous ayez enregistré l'exemple de code indiqué ci-dessus dans un fichier nommé "test.py", en exécutant les commandes ci-dessous, vous obtiendrez des messages d'aide liés au programme.
$ ./test.py -h$ ./test.py --help
Vous devriez obtenir une sortie semblable à celle-ci :
utilisation : tester.py [-h]Un programme de test d'arguments optionnels :
-h, --help affiche ce message d'aide et quitte
Notez qu'aucune logique pour gérer les arguments analysés et les convertir en objets n'a été ajoutée à l'exemple de code mentionné ci-dessus. Par conséquent, les messages d'aide pour les arguments individuels ne sont pas affichés dans la sortie. Une fois que vous avez ajouté une logique pour gérer les valeurs des arguments analysés dans votre programme, les messages d'aide commenceront à afficher des descriptions pour les arguments individuels.
Exemple 2 : gérer un argument de chaîne
Pour ajouter des arguments acceptables par votre script Python, vous devez utiliser la méthode "add_argument". Jetez un œil au code suivant :
importer argparseparser = argparse.ArgumentParser(description='Un programme de test.')
analyseur.add_argument("print_string", help="Imprime l'argument fourni.")
args = analyseur.parse_args()
print(args.chaîne_impression)
Une nouvelle instruction a été ajoutée, montrant l'utilisation de la méthode "add_argument". Tout argument ajouté lors du lancement du script sera traité comme un objet « print_string » par « ArgumentParser ».
Notez que par défaut, la méthode "add_argument" traite les valeurs extraites des arguments comme des chaînes, vous n'avez donc pas à spécifier explicitement le "type" dans ce cas. Une valeur par défaut de « Aucun » est également attribuée aux arguments ajoutés, à moins qu'elle ne soit remplacée.
Encore une fois, jetez un œil au message d'aide :
utilisation : tester.py [-h] [chaîne_impression]Un programme de test d'arguments positionnels :
print_string imprime l'argument fourni
arguments facultatifs :
-h, --help affiche ce message d'aide et quitte
L'une des lignes de sortie indique « arguments positionnels ». Étant donné qu'aucun mot-clé pour l'argument n'est défini, l'argument est actuellement traité comme un "argument positionnel" où l'ordre et la position de l'argument fourni ont un effet direct sur le programme. Les arguments positionnels sont également obligatoires, sauf si vous modifiez manuellement leur comportement.
Pour définir et analyser les arguments facultatifs, vous pouvez utiliser "-" (double tiret) et modifier leurs valeurs par défaut à l'aide de l'argument "default".
importer argparseparser = argparse.ArgumentParser(description='Un programme de test.')
analyseur.add_argument("--print_string", help="Imprime l'argument fourni.", default=”Une chaîne aléatoire.”)
args = analyseur.parse_args()
print(args.chaîne_impression)
Maintenant, lorsque vous exécutez le "test.py" sans aucun argument, vous devriez obtenir "Une chaîne aléatoire." comme sortie. Vous pouvez également éventuellement utiliser le mot-clé "-print_string" pour imprimer n'importe quelle chaîne de votre choix.
$ ./test.py --print_string LinuxHint.comLinuxHint.com
Notez que vous pouvez rendre un argument facultatif obligatoire en utilisant un argument supplémentaire « required=True ».
Enfin, vous pouvez également définir des versions abrégées de l'argument en utilisant "-" (un seul tiret) pour réduire la verbosité.
importer argparseparser = argparse.ArgumentParser(description='Un programme de test.')
analyseur.add_argument(“-p”, "--print_string", help="Imprime l'argument fourni.", default=”Une chaîne aléatoire.”)
args = analyseur.parse_args()
print(args.chaîne_impression)
L'exécution de la commande suivante devrait vous donner le même résultat que ci-dessus :
$ ./test.py -p LinuxHint.comExemple 3 : gérer un argument entier
Pour gérer les arguments qui nécessitent des valeurs entières, vous devez définir le mot-clé "type" sur "int" pour permettre la validation et générer des erreurs au cas où la condition ne serait pas remplie.
importer argparseparser = argparse.ArgumentParser(description='Un programme de test.')
analyseur.add_argument("-p", "--print_string", help="Imprime l'argument fourni.", tapez=int)
args = analyseur.parse_args()
print(args.chaîne_impression)
Essayez d'exécuter la commande suivante :
$ ./test.py -p LinuxHint.comVous devriez obtenir une erreur comme celle-ci :
utilisation : tester.py [-h] [-p PRINT_STRING]test.py : erreur : argument -p/--print_string : valeur int invalide : 'LinuxHint.viens
Fournir une valeur entière vous donnera le résultat correct :
$ ./test.py -p 1000 1000Exemple 4 : Gérer les bascules vrai et faux
Vous pouvez passer des arguments sans aucune valeur pour les traiter comme des drapeaux True et False en utilisant l'argument "action".
importer argparseparser = argparse.ArgumentParser(description='Un programme de test.')
analyseur.add_argument("-p", "--print_string", help="Imprime l'argument fourni.", action="store_true")
args = analyseur.parse_args()
print(args.chaîne_impression)
Exécutez la commande ci-dessous pour obtenir un simple « True » comme sortie :
$ ./test.py -pSi vous exécutez le script sans l'argument "-p", une valeur "False" sera attribuée à la place. La valeur "store_true" du mot-clé "action" affecte une valeur "True" à la variable "print_string" chaque fois que l'argument "-p" est explicitement spécifié, sinon False est affecté à la variable.
Exemple 5 : Traiter les valeurs d'argument comme une liste
Si vous souhaitez obtenir plusieurs valeurs à la fois et les stocker dans une liste, vous devez fournir le mot-clé « nargs » au format suivant :
importer argparseparser = argparse.ArgumentParser(description='Un programme de test.')
analyseur.add_argument("-p", "--print_string", help="Imprime l'argument fourni.", nargs='*')
args = analyseur.parse_args()
print(args.chaîne_impression)
Exécutez la commande suivante pour tester le code ci-dessus :
$ ./test.py -p "a" "b"Vous devriez obtenir une sortie comme celle-ci :
['un B']Conclusion
Le module "argparse" est assez complet avec des tonnes d'options pour modifier le comportement des applications en ligne de commande et analyser les valeurs fournies par l'utilisateur. Ces exemples ne touchent que l'utilisation de base du module "argparse". Pour les applications avancées et complexes, vous aurez peut-être besoin de différentes implémentations. Visitez la documentation officielle pour une explication complète du module.