Analyser les arguments de ligne de commande à l'aide de Python
Lors de l’exécution de programmes Python à partir de la ligne de commande ou du shell, nous pouvons transmettre des valeurs sous forme de chaînes, techniquement, des arguments ou des options, au programme. Le programme peut accéder à ces valeurs et effectuer son exécution et même utiliser ces valeurs pour le calcul.
Cet article expliquera comment nous pouvons analyser ces arguments de ligne de commande à l’aide de Python et les utiliser.
Analyser les arguments de ligne de commande à l’aide du module optparse
Le module optparse
est un package Python flexible et pratique pour analyser les options de ligne de commande. Il est intégré au Python standard. Il utilise une méthodologie déclarative pour analyser les options de ligne de commande. Pour utiliser ce package, nous devons d’abord créer un objet de la classe OptionParser
puis ajouter des détails sur les options ou arguments possibles à l’aide de la méthode add_option()
. La méthode add_option()
accepte des arguments tels que option
(le nom de l’option), type
(le type de données de l’option), help
(le texte d’aide de l’option) et default
(le valeur par défaut de l’option, si elle n’est pas spécifiée dans la commande). Pour récupérer les options et leurs valeurs depuis la commande en ligne de commande sous forme de dictionnaire, on peut utiliser la méthode parse_args()
.
Comprenons mieux l’utilisation de cette bibliothèque à l’aide d’un exemple. Nous allons implémenter un programme Python simple qui vérifiera trois options : -a
, -b
et -c
. Ici, -a
et -b
représentent les opérandes, +
est l’opérateur et -c
est essentiellement la somme cible. De plus, le code vérifiera ces valeurs, leur attribuera la valeur 0
si aucune valeur n’est trouvée dans la commande en ligne de commande, et enfin, vérifiera si a + b
est égal à -c
ou non. De plus, il imprimera également les résultats dans une chaîne bien formatée.
import optparse
parser = optparse.OptionParser()
parser.add_option("-a", help="First Number", default=0)
parser.add_option("-b", help="Second Number", default=0)
parser.add_option("-c", help="Sum", default=0)
options, args = parser.parse_args()
a = int(options.a)
b = int(options.b)
c = int(options.c)
s = a + b
print(f"{a} + {b} = {s} and {s} {'==' if s == c else '!='} {c}")
Voici une brève explication du code ci-dessus. Tout d’abord, il crée un objet de classe OptionParser()
et ajoute des informations sur les trois options cibles ; -a
, -b
et -c
. Ensuite, il parcourt la ligne de commande ou la commande shell pour vérifier les options requises. Enfin, il stocke toutes les valeurs dans des variables séparées, calcule la somme ou a + b
, et la compare à la somme cible ou c
.
Testons ce programme pour les commandes suivantes.
python main.py -a 1 -b 2 -c 3
python main.py -a 1
python main.py -b 2
python main.py -c 3
python main.py 1 2 3
python main.py -a 1 2 3
python main.py 1 -b 2 3
python main.py 1 2 -c 3
python main.py 0 0 0
python main.py
Production :
1 + 2 = 3 and 3 == 3
1 + 0 = 1 and 1 != 0
0 + 2 = 2 and 2 != 0
0 + 0 = 0 and 0 != 3
0 + 0 = 0 and 0 == 0
1 + 0 = 1 and 1 != 0
0 + 2 = 2 and 2 != 0
0 + 0 = 0 and 0 != 3
0 + 0 = 0 and 0 == 0
0 + 0 = 0 and 0 == 0
À partir des sorties, nous pouvons déduire que les valeurs par défaut sont prises en compte lorsqu’aucune option de mot-clé ou aucun argument n’est fourni à la ligne de commande ou à la commande shell. Référez-vous aux commandes de test sauf la première (python main.py -a 1 -b 2 -c 3
) pour une meilleure analyse.