Options de ligne de commande et analyse des arguments avec argparse en Python
Les interfaces en ligne de commande (CLI) sont parmi les moyens les plus rapides et les plus efficaces d’interagir avec un logiciel. Elles permettent d’exécuter des commandes directement, ce qui se traduit par une exécution plus rapide et des fonctionnalités enrichies. Les développeurs créent souvent des CLI en Python pour diverses applications, utilitaires et scripts d’automatisation, afin de traiter dynamiquement les entrées utilisateur. C’est ici qu’intervient le module argparse de Python.
Le module argparse simplifie la gestion des entrées en ligne de commande et permet aux développeurs de créer des outils interactifs et conviviaux. Faisant partie de la bibliothèque standard, il permet de définir, traiter et valider les entrées sans nécessiter de logique complexe.
Cet article présente les concepts essentiels, des exemples utiles et des fonctionnalités avancées du module argparse pour vous aider à créer rapidement des outils CLI fiables.
Comment utiliser argparse en Python pour les interfaces en ligne de commande Copier le lien
Étape 1 : Importer le module Copier le lien
Importez le module dans votre script :
import argparse
Cela permet l’analyse des arguments transmis à un script Python via la ligne de commande.
Étape 2 : Créer un objet ArgumentParser Copier le lien
La classe ArgumentParser constitue l’élément central de l’API du module argparse. Commencez par créer une instance :
parser = argparse.ArgumentParser(description="A Hostman tutorial on Python argparse.")
Ici :
-
description explique ce que fait le programme et s’affiche lorsqu’on utilise --help.
Étape 3 : Ajouter des entrées et options Copier le lien
Définissez les paramètres acceptés par votre programme à l’aide de add_argument() :
parser.add_argument('filename', type=str, help="Name of the file to process")
parser.add_argument('--verbose', action='store_true', help="Enable verbose mode")
Explications :
-
filename est obligatoire.
-
--verbose est optionnel et active le mode verbeux.
Étape 4 : Analyser les entrées utilisateur Copier le lien
Traitez les arguments fournis :
args = parser.parse_args()
Les valeurs extraites sont accessibles sous forme d’attributs de l’objet args.
Étape 5 : Utiliser les données traitées Copier le lien
Exemple :
print(f"File to process: {args.filename}")
if args.verbose:
print("Verbose mode enabled")
else:
print("Verbose mode disabled")
Exemples d’utilisation de la CLI Copier le lien
Traitement d’un fichier sans mode verbeux Copier le lien
python3 file.py example.txt
Traitement d’un fichier avec mode verbeux Copier le lien
python3 file.py example.txt --verbose
Afficher l’aide Copier le lien
python3 file.py --help
Exemples courants d’utilisation de argparse Copier le lien
Exemple 1 : Ajouter des valeurs par défaut Copier le lien
Les arguments optionnels peuvent disposer de valeurs par défaut. Ici, --timeout adopte une valeur par défaut de 30 secondes :
import argparse
parser = argparse.ArgumentParser(description="Demonstrating default argument values.")
parser.add_argument('--timeout', type=int, default=30, help="Timeout in seconds (default: 30)")
args = parser.parse_args()
print(f"Timeout value: {args.timeout} seconds")
Explications
-
Importation du module
-
Création de l’objet ArgumentParser
-
Ajout de --timeout avec type entier et valeur par défaut
-
Analyse avec parse_args()
Cas 1 : valeur par défaut
python file.py
Cas 2 : valeur personnalisée
python file.py --timeout 60
Exemple 2 : Utiliser choices Copier le lien
Le paramètre choices limite un argument à une liste de valeurs valides :
parser.add_argument('--mode', choices=['basic', 'advanced'], help="Choose the mode of operation")
Cas 1 : valeur valide
python3 file.py --mode basic
Cas 2 : aucun argument
python3 file.py
Cas 3 : valeur non valide
python3 file.py --mode intermediate
Exemple 3 : Gérer plusieurs valeurs Copier le lien
Le paramètre nargs='+' permet d’accepter plusieurs valeurs pour un même argument :
parser.add_argument('--numbers', nargs='+', type=int, help="List of numbers to process")
Cas 1 : plusieurs valeurs
python3 file.py --numbers 10 20 30
Cas 2 : une seule valeur
python3 file.py --numbers 5
Cas 3 : aucune valeur
python3 file.py
Cas 4 : entrée non valide
python3 file.py --numbers 10 abc 20
Exemple 4 : Arguments optionnels obligatoires Copier le lien
Bien que les arguments commençant par -- soient optionnels, ils peuvent être rendus obligatoires avec required=True :
parser.add_argument('--config', required=True, help="Path to the configuration file")
Cas 1 : entrée valide
python3 file.py --config settings.json
Cas 2 : absence de l’argument obligatoire
python3 file.py
Fonctionnalités avancées Copier le lien
Flags booléens Copier le lien
parser.add_argument('--debug', action='store_true', help="Enable debugging mode")
Regrouper des arguments liés Copier le lien
group = parser.add_argument_group('File Operations')
group.add_argument('--input', type=str, help="Input file")
group.add_argument('--output', type=str, help="Output file")
Arguments mutuellement exclusifs Copier le lien
group = parser.add_mutually_exclusive_group()
group.add_argument('--json', action='store_true', help="Output in JSON format")
group.add_argument('--xml', action='store_true', help="Output in XML format")
Conclusion Copier le lien
Le module argparse simplifie la création de CLI robustes pour traiter les arguments de ligne de commande en Python. Des paramètres de base aux options avancées comme choices et nargs, les développeurs peuvent créer des outils puissants, fiables et faciles à utiliser. Donner des noms clairs aux arguments et rédiger de bonnes descriptions contribue également à rendre les scripts plus lisibles et plus simples à maintenir.