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.
Importez le module dans votre script :
import argparse
Cela permet l’analyse des arguments transmis à un script Python via la ligne de commande.
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.
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.
Traitez les arguments fournis :
args = parser.parse_args()
Les valeurs extraites sont accessibles sous forme d’attributs de l’objet args.
Exemple :
print(f"File to process: {args.filename}")
if args.verbose:
print("Verbose mode enabled")
else:
print("Verbose mode disabled")
python3 file.py example.txt
python3 file.py example.txt --verbose
python3 file.py --help
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
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
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
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
parser.add_argument('--debug', action='store_true', help="Enable debugging mode")
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")
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")
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.