Module Argparse Python
Le module argparse vous aide à construire des interfaces en ligne de commande avec des arguments positionnels, des options, des drapeaux et des messages d’aide.
Le module a été ajouté dans Python 3.2. Si vous utilisez Python 3.14, ArgumentParser prend aussi en charge les paramètres suggest_on_error et color.
import argparse
Utilisez argparse lorsque vous voulez qu’un fichier Python se comporte comme un petit programme de terminal :
python greet.py Ada --count 2
Le module lit le texte situé après le nom du script, le valide et vous renvoie un objet Python contenant les valeurs analysées.
Créer un analyseur
ArgumentParser stocke les arguments acceptés par votre programme.
import argparse
parser = argparse.ArgumentParser(
prog='greet',
description='Greet a user from the command line',
)
parser.print_help()
usage: greet [-h]
Greet a user from the command line
options:
-h, --help show this help message and exit
Arguments positionnels
Les arguments positionnels sont obligatoires par défaut.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('name')
args = parser.parse_args(['Ada'])
print(args.name)
Ada
Arguments optionnels et drapeaux
Les arguments optionnels commencent généralement par - ou --.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--count', type=int, default=1)
parser.add_argument('-v', '--verbose', action='store_true')
args = parser.parse_args(['--count', '3', '--verbose'])
print(args.count)
print(args.verbose)
3
True
Choix et conversion de type
Vous pouvez valider les valeurs au moment de l’analyse.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--mode', choices=['dev', 'prod'])
parser.add_argument('--port', type=int, default=8000)
args = parser.parse_args(['--mode', 'dev', '--port', '9000'])
print(args.mode)
print(args.port)
dev
9000
Sous-commandes
Les sous-commandes sont utiles pour des outils comme git commit ou docker run.
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest='command', required=True)
build_parser = subparsers.add_parser('build')
build_parser.add_argument('--release', action='store_true')
args = parser.parse_args(['build', '--release'])
print(args.command)
print(args.release)
build
True
Un petit exemple complet
Cet exemple accepte un nom et répète le message de bienvenue.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('name')
parser.add_argument('--count', type=int, default=1)
args = parser.parse_args(['Ada', '--count', '2'])
for _ in range(args.count):
print(f'Hello {args.name}!')
Hello Ada!
Hello Ada!