Python

Comment ajouter des arguments de ligne de commande à un script Python?

Comment ajouter des arguments de ligne de commande à un script Python?
Si vous avez développé un script ou une application Python destiné à être principalement exécuté dans les émulateurs de terminaux ou même les applications GUI, l'ajout d'arguments de ligne de commande peut améliorer sa convivialité, la lisibilité du code, la structure de l'application et la convivialité globale de l'application pour les utilisateurs finaux. Ces arguments de ligne de commande sont également appelés « options » ou « commutateurs » et fonctionnent de la même manière que les arguments que vous voyez habituellement dans les scripts bash et autres programmes basés sur C/C++.

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 argparse
parser = 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 argparse
parser = 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 argparse
parser = 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.com
LinuxHint.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 argparse
parser = 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.com

Exemple 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 argparse
parser = 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.com

Vous 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 1000

Exemple 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 argparse
parser = 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 -p

Si 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 argparse
parser = 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.

Comment changer la taille, la couleur et le schéma du pointeur et du curseur de la souris sous Windows 10
Le pointeur et le curseur de la souris dans Windows 10 sont des aspects très importants du système d'exploitation. Cela peut également être dit pour d...
Moteurs de jeux gratuits et open source pour le développement de jeux Linux
Cet article couvrira une liste de moteurs de jeux gratuits et open source qui peuvent être utilisés pour développer des jeux 2D et 3D sur Linux. Il ex...
Tutoriel Shadow of the Tomb Raider pour Linux
Shadow of the Tomb Raider est le douzième ajout à la série Tomb Raider - une franchise de jeux d'action-aventure créée par Eidos Montréal. Le jeu a ét...