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

How Add Command Line Arguments Python Script



Si vous avez développé un script ou une application Python destiné à être principalement exécuté dans des émulateurs de terminaux ou même des 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 :



importerargparse

analyseur =argparse.ArgumentParser(la description='Un programme d'essai.')

arguments= 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 comme 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, l'exécution des commandes ci-dessous vous permettra d'obtenir des messages d'aide liés au programme.

$ ./test.py-h

$ ./test.py-aider

Vous devriez obtenir une sortie semblable à celle-ci :



utilisation : test.py [-h]


Un programme d'essai.


arguments facultatifs :

-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 la description des 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 :

importerargparse

analyseur =argparse.ArgumentParser(la description='Un programme d'essai.')

analyseur.add_argument('print_string', aider='Imprime l'argument fourni.')

arguments= analyseur.parse_args()

imprimer(arguments.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 besoin de spécifier explicitement le type dans ce cas. Une valeur par défaut de None est également attribuée aux arguments ajoutés, à moins qu'elle ne soit remplacée.

Jetez à nouveau un œil au message d'aide :

utilisation : test.py [-h] [print_string]


Un programme d'essai.


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 des arguments positionnels. Puisqu'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 par défaut.

importerargparse

analyseur =argparse.ArgumentParser(la description='Un programme d'essai.')

analyseur.add_argument('--print_string', aider='Imprime l'argument fourni.',défaut=ÀAléatoire chaîne de caractères.)

arguments= analyseur.parse_args()

imprimer(arguments.chaîne_impression)

Maintenant, lorsque vous exécutez le script 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.avecLinuxHint.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 - (tiret unique) pour réduire la verbosité.

importerargparse

analyseur =argparse.ArgumentParser(la description='Un programme d'essai.')

analyseur.add_argument(-p, '--print_string', aider='Imprime l'argument fourni.',défaut=ÀAléatoire chaîne de caractères.)

arguments= analyseur.parse_args()

imprimer(arguments.chaîne_impression)

L'exécution de la commande suivante devrait vous donner le même résultat que ci-dessus :

$ ./test.py-p Indice Linux.avec

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 autoriser la validation et générer des erreurs au cas où la condition ne serait pas remplie.

importerargparse

analyseur =argparse.ArgumentParser(la description='Un programme d'essai.')

analyseur.add_argument('-p', '--print_string', aider='Imprime l'argument fourni.', taper=entier)

arguments= analyseur.parse_args()

imprimer(arguments.chaîne_impression)

Essayez d'exécuter la commande suivante :

$ ./test.py-p Indice Linux.avec

Vous devriez obtenir une erreur comme celle-ci :

utilisation : test.py [-h] [-p PRINT_STRING]

test.py : erreur : argument -p/--print_string : valeur int invalide : 'LinuxHint.com'

Fournir une valeur entière vous donnera un résultat correct :

$ ./test.py-p10001000

Exemple 4 : Gérer les bascules vrai et faux

Vous pouvez passer des arguments sans aucune valeur pour les traiter comme des indicateurs True et False à l'aide de l'argument action.

importerargparse

analyseur =argparse.ArgumentParser(la description='Un programme d'essai.')

analyseur.add_argument('-p', '--print_string', aider='Imprime l'argument fourni.',action='store_true')

arguments= analyseur.parse_args()

imprimer(arguments.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 :

importerargparse

analyseur =argparse.ArgumentParser(la description='Un programme d'essai.')

analyseur.add_argument('-p', '--print_string', aider='Imprime l'argument fourni.',nargs='*')

arguments= analyseur.parse_args()

imprimer(arguments.chaîne_impression)

Exécutez la commande suivante pour tester le code ci-dessus :

$ ./test.py-p un 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 concernent 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. Visiter le documents officiels pour une explication complète du module.