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 des émulateurs terminaux ou même des applications GUI, l'ajout d'arguments de ligne de commande peut améliorer son utilisation, la lisibilité du code, la structure de l'application et la convivialité globale de l'utilisateur de l'application pour les utilisateurs finaux. Ces arguments de ligne de commande sont également appelés «options» ou «commutateurs» et fonctionnent de manière similaire aux arguments que vous voyez habituellement dans les scripts bash et d'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 de «type» approprié. Des erreurs sont soulevées s'il y a des valeurs non valides dans les arguments.

L'utilisation du module Argparse peut être mieux comprise à travers des exemples. Vous trouverez ci-dessous quelques échantillons de code qui vous permettra de démarrer avec le module Argparse.

Exemple 1: générer un argument d'aide et un message

Considérez l'exemple de code ci-dessous:

Importer Argparse
Parser = Argparse.ArgumentPaSer (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 comme argument. L'objet ArgumentParser est nécessaire pour convertir les valeurs d'argument de la ligne de commande en types de données comprises 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 avez enregistré l'échantillon de code indiqué ci-dessus dans un fichier nommé «Test.py ", exécuter les commandes ci-dessous vous permettra d'aider les messages liés au programme.

$ ./test.py -h
$ ./test.py - help

Vous devriez obtenir une sortie similaire à ceci:

Utilisation: tester.py [-H]
Un programme de test.
Arguments facultatifs:
-h, --help afficher ce message d'aide et quitter

Notez qu'aucune logique pour gérer les arguments analysés et les convertir en objets n'a été ajouté à l'échantillon 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:

Importer Argparse
Parser = Argparse.ArgumentPaSer (Description = 'un programme de test.')
analyseur.add_argument ("print_string", help = "imprime l'argument fourni.")
args = analyseur.parse_args ()
imprimer (args.print_string)

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 récupérées des arguments sous forme de 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 à des arguments ajoutés, sauf dépassement.

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

Utilisation: tester.py [-H] [print_string]
Un programme de test.
Arguments de position:
print_string imprime l'argument fourni.
Arguments facultatifs:
-h, --help afficher ce message d'aide et quitter

L'une des lignes de sortie indique des «arguments de position». Étant donné qu'aucun mot clé pour l'argument n'est défini, l'argument est actuellement traité comme un «argument de position» où l'ordre et la position de l'argument fourni ont un effet direct sur le programme. Les arguments de position sont également obligatoires, sauf si vous changez manuellement leur comportement.

Pour définir et analyser les arguments facultatifs, vous pouvez utiliser «-» (Double Dash) et modifier leurs valeurs par défaut en utilisant l'argument «par défaut».

Importer Argparse
Parser = Argparse.ArgumentPaSer (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 ()
imprimer (args.print_string)

Maintenant, quand vous exécutez «Test.Script py »sans aucun argument, vous devriez obtenir« une chaîne aléatoire.«Comme sortie. Vous pouvez également utiliser éventuellement 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 «requis = vrai» supplémentaire.

Enfin, vous pouvez également définir des versions sortantes de l'argument à l'aide de «-» (tableau de bord unique) pour réduire la verbosité.

Importer Argparse
Parser = Argparse.ArgumentPaSer (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 ()
imprimer (args.print_string)

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 des erreurs de validation et de lancer dans le cas où la condition ne serait pas remplie.

Importer Argparse
Parser = Argparse.ArgumentPaSer (Description = 'un programme de test.')
analyseur.add_argument ("- p", "--print_string", help = "imprime l'argument fourni.", type = int)
args = analyseur.parse_args ()
imprimer (args.print_string)

Essayez d'exécuter la commande suivante:

$ ./test.py -p Linuxhint.com

Vous devriez obtenir une erreur comme ceci:

Utilisation: tester.py [-H] [-p print_string]
test.py: erreur: argument -p / - print_string: valeur int non valide: 'Linuxhint.com '

La fourniture d'une valeur entière vous donnera un résultat correct:

$ ./test.py -p 1000 1000

Exemple 4: gérer les bascules vraies et fausses

Vous pouvez passer des arguments sans aucune valeur pour les traiter comme des indicateurs vrais et faux en utilisant l'argument «Action».

Importer Argparse
Parser = Argparse.ArgumentPaSer (Description = 'un programme de test.')
analyseur.add_argument ("- p", "--print_string", help = "imprime l'argument fourni.", action =" store_true ")
args = analyseur.parse_args ()
imprimer (args.print_string)

Exécutez la commande ci-dessous pour obtenir un simple «vrai» comme sortie:

$ ./test.py -p

Si vous exécutez le script sans l'argument «-p», une valeur «fausse» sera affectée à la place. La valeur «Store_True» du mot clé «Action» attribue une valeur «vraie» à 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 liste

Si vous souhaitez obtenir plusieurs valeurs à la fois et les stocker dans la liste, vous devez fournir un mot-clé «Nargs» dans le format suivant:

Importer Argparse
Parser = Argparse.ArgumentPaSer (Description = 'un programme de test.')
analyseur.add_argument ("- p", "--print_string", help = "imprime l'argument fourni.", nargs = '*')
args = analyseur.parse_args ()
imprimer (args.print_string)

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

$ ./test.py -p "a" "b"

Vous devriez obtenir une sortie comme ceci:

['un B']

Conclusion

Le module «ArgParse» est assez complet avec des tonnes d'options pour modifier le comportement des applications de 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 pourriez avoir besoin d'implémentations différentes. Visitez la documentation officielle pour une explication complète du module.