Arguments de ligne de commande en Python

Manav Narula 9 juillet 2021
  1. Utilisez le module sys pour traiter les arguments de ligne de commande en Python
  2. Utilisez le module getopt pour traiter les arguments de ligne de commande en Python
  3. Utilisez le module argparse pour traiter les arguments de ligne de commande en Python
Arguments de ligne de commande en Python

Les arguments de ligne de commande sont les valeurs fournies dans la fenêtre de ligne de commande lors de l’exécution du fichier. Ils sont accommodants car cela nous permet de passer les valeurs lors de l’exécution du programme.

En Python, différents modules peuvent être utilisés pour traiter les arguments de ligne de commande, qui sont décrits ci-dessous.

Utilisez le module sys pour traiter les arguments de ligne de commande en Python

Le sys.argv() permet de stocker les arguments fournis en ligne de commande dans une structure de type liste. Le nom du fichier est considéré comme le premier argument.

Par example,

import sys

print("Arguments without the script name ", (len(sys.argv) - 1))
print("Arguments given ")
for i in range(1, len(sys.argv)):
    print(sys.argv[i])

Dans l’exemple ci-dessus, nous passons certains arguments au moment de l’exécution et affichons le nombre total d’arguments et leurs valeurs.

Utilisez le module getopt pour traiter les arguments de ligne de commande en Python

Le module getopt traite également les arguments de ligne de commande. Il nous permet de valider les valeurs données. Nous pouvons fournir des valeurs avec l’argument ainsi que des chaînes d’options que le script peut reconnaître. Ce module fonctionne avec le module sys pour un meilleur traitement.

Le constructeur getopt() est utilisé pour initialiser l’objet, qui analyse les arguments. Il renvoie un getopt.error lorsque l’option n’est pas reconnue dans la liste des arguments.

Nous l’utilisons dans le code ci-dessous.

import getopt
import sys

lst = sys.argv[1:]
options = "abc:"
long_options = ["A_Message", "B_Message", "C_Message"]

try:

    arguments, values = getopt.getopt(lst, options, long_options)

    for currentArgument, currentValue in arguments:

        if currentArgument in ("-a", "--A_Message"):
            print("Message A received")
        elif currentArgument in ("-b", "--B_Message"):
            print("Message B received")
        elif currentArgument in ("-c", "--C_Message"):
            print("Message C received")

except getopt.error as err:
    print("Error")

Utilisez le module argparse pour traiter les arguments de ligne de commande en Python

Le module argparse est de loin le module le plus pratique pour travailler avec des arguments de ligne de commande. Ce module offre beaucoup de flexibilité puisqu’il peut gérer des arguments positionnels, des arguments optionnels et également spécifier leur type.

Nous pouvons mettre des valeurs par défaut au cas où un argument manque et même afficher un message d’aide.

La fonction ArgumentParser() crée un objet analyseur. La fonction parse.args() lit les arguments depuis la ligne de commande.

Par example,

import argparse

parser = argparse.ArgumentParser(description="Which Message?")
parser.add_argument("a")
parser.add_argument("b")
args = parser.parse_args()
print(args.a, args.b)
Auteur: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn