Maîtriser l'argparse de Python : un guide complet pour les débutants

DDD
Libérer: 2024-09-18 17:54:32
original
914 Les gens l'ont consulté

Mastering Python’s argparse: A Comprehensive Guide for Beginners

Introduction

Le module argparse de Python est un outil puissant pour créer des interfaces de ligne de commande conviviales. Que vous développiez des scripts simples ou des applications complexes, savoir utiliser efficacement argparse peut améliorer considérablement la convivialité de vos programmes. Dans cet article, je vais vous expliquer tout ce que vous devez savoir pour maîtriser argparse, de l'analyse des arguments de base aux fonctionnalités avancées et aux meilleures pratiques.


Qu'est-ce que argparse ?

Le module argparse fournit un moyen simple de gérer les arguments de ligne de commande transmis à votre script Python. Il génère automatiquement des messages d'aide, gère la vérification du type et peut traiter les arguments facultatifs et positionnels.

Pourquoi utiliser argparse ?

  • Messages d'aide automatiques : les utilisateurs peuvent facilement comprendre comment exécuter votre programme en utilisant l'option --help.
  • Vérification de type : vous pouvez vous assurer que les entrées sont valides (par exemple, des entiers là où vous les attendez).
  • Interfaces de ligne de commande lisibles : Rend vos scripts plus professionnels et conviviaux.

Commençons par les bases !


Configuration d'argparse

Pour commencer à utiliser argparse, vous devez d'abord importer le module et créer un objet ArgumentParser :

import argparse

parser = argparse.ArgumentParser(description="Demo script for argparse.")
Copier après la connexion

L'argument description ici est facultatif et aide à expliquer le but de votre script. Il apparaît lorsque les utilisateurs exécutent la commande --help.

Arguments de position

Les arguments positionnels sont le type d’argument le plus basique dans argparse. Ceux-ci sont obligatoires et doivent apparaître dans la commande dans le bon ordre.

parser.add_argument("name", help="Your name")
args = parser.parse_args()
print(f"Hello, {args.name}!")
Copier après la connexion

Exécuter le script :

$ python script.py Alice
Hello, Alice!
Copier après la connexion
Copier après la connexion

Si vous ne fournissez pas l'argument name, argparse générera une erreur :

$ python script.py
usage: script.py [-h] name
script.py: error: the following arguments are required: name
Copier après la connexion

Arguments facultatifs

Les arguments facultatifs, comme leur nom l'indique, ne sont pas obligatoires. Ceux-ci commencent généralement par un ou deux tirets (- ou --) pour les distinguer des arguments de position.

parser.add_argument("-g", "--greeting", help="Custom greeting message", default="Hello")
args = parser.parse_args()
print(f"{args.greeting}, {args.name}!")
Copier après la connexion

Exécuter le script :

$ python script.py Alice --greeting Hi
Hi, Alice!
Copier après la connexion
Copier après la connexion

L'argument par défaut garantit qu'une valeur par défaut est utilisée si l'utilisateur ne fournit pas l'option :

$ python script.py Alice
Hello, Alice!
Copier après la connexion
Copier après la connexion

Types d'arguments

Par défaut, tous les arguments sont traités comme des chaînes. Mais vous pouvez spécifier le type d’argument que vous attendez. Par exemple, si vous avez besoin d'un entier :

parser.add_argument("age", type=int, help="Your age")
args = parser.parse_args()
print(f"{args.name} is {args.age} years old.")
Copier après la connexion

Exécuter le script :

$ python script.py Alice 25
Alice is 25 years old.
Copier après la connexion

Si vous fournissez un type invalide (par exemple, une chaîne où un entier est attendu), argparse affichera automatiquement une erreur :

$ python script.py Alice twenty-five
usage: script.py [-h] name age
script.py: error: argument age: invalid int value: 'twenty-five'
Copier après la connexion

Arguments de drapeau (options booléennes)

Les arguments de drapeau sont utiles pour activer ou désactiver certaines fonctionnalités. Ceux-ci ne prennent pas de valeur mais agissent comme des commutateurs. Utilisez l'option action="store_true" pour créer un indicateur.

parser.add_argument("-v", "--verbose", action="store_true", help="Enable verbose mode")
args = parser.parse_args()

if args.verbose:
    print("Verbose mode is on.")
Copier après la connexion

Exécuter le script :

$ python script.py Alice -v
Verbose mode is on.
Copier après la connexion

Si vous ne fournissez pas l'indicateur, la valeur par défaut False est utilisée :

$ python script.py Alice
Copier après la connexion

Noms d'options courts ou longs

argparse vous permet de définir des noms d'options courts et longs pour le même argument. Par exemple :

parser.add_argument("-g", "--greeting", help="Custom greeting message")
Copier après la connexion

Vous pouvez utiliser soit la version courte (-g), soit la version longue (--greeting) :

$ python script.py Alice -g Hi
Hi, Alice!
Copier après la connexion
$ python script.py Alice --greeting Hi
Hi, Alice!
Copier après la connexion
Copier après la connexion

Valeurs par défaut

Dans certains cas, vous souhaiterez peut-être définir des valeurs par défaut pour vos arguments facultatifs. Cela garantit que votre programme se comporte correctement même lorsqu'un argument est manquant.

parser.add_argument("-g", "--greeting", default="Hello", help="Greeting message")
args = parser.parse_args()
print(f"{args.greeting}, {args.name}!")
Copier après la connexion

Gestion de plusieurs valeurs

Vous pouvez également spécifier des arguments qui acceptent plusieurs valeurs à l'aide de nargs. Par exemple, pour accepter plusieurs noms de fichiers :

parser.add_argument("files", nargs="+", help="List of file names")
args = parser.parse_args()
print(f"Files to process: {args.files}")
Copier après la connexion

Exécuter le script :

$ python script.py file1.txt file2.txt file3.txt
Files to process: ['file1.txt', 'file2.txt', 'file3.txt']
Copier après la connexion

Choix limitatifs

Vous pouvez restreindre les valeurs possibles d'un argument en utilisant l'option choix :

parser.add_argument("--format", choices=["json", "xml"], help="Output format")
args = parser.parse_args()
print(f"Output format: {args.format}")
Copier après la connexion

Exécuter le script :

$ python script.py Alice --format json
Output format: json
Copier après la connexion

Si l'utilisateur fournit un choix non valide, argparse générera une erreur :

$ python script.py Alice --format csv
usage: script.py [-h] [--format {json,xml}] name
script.py: error: argument --format: invalid choice: 'csv' (choose from 'json', 'xml')
Copier après la connexion

Combiner des arguments positionnels et facultatifs

Vous pouvez mélanger et faire correspondre des arguments positionnels et facultatifs dans le même script.

parser.add_argument("name", help="Your name")
parser.add_argument("--greeting", help="Custom greeting", default="Hello")
parser.add_argument("--verbose", action="store_true", help="Enable verbose output")

args = parser.parse_args()

if args.verbose:
    print(f"Running in verbose mode...")

print(f"{args.greeting}, {args.name}!")
Copier après la connexion

Générer des messages d'aide

L’une des plus grandes forces d’argparse est son générateur de messages d’aide intégré. Lorsqu'un utilisateur exécute votre script avec l'indicateur -h ou --help, argparse affichera automatiquement les arguments et leurs descriptions.

$ python script.py -h
usage: script.py [-h] [--greeting GREETING] [--verbose] name

Demo script for argparse.

positional arguments:
  name             Your name

optional arguments:
  -h, --help       show this help message and exit
  --greeting GREETING
                   Custom greeting
  --verbose        Enable verbose output
Copier après la connexion

Subparsers: Handling Multiple Commands

If your script has multiple subcommands (e.g., git commit, git push), you can use subparsers to handle them.

parser = argparse.ArgumentParser(description="Git-like command-line tool")
subparsers = parser.add_subparsers(dest="command")

# Add "commit" subcommand
commit_parser = subparsers.add_parser("commit", help="Record changes to the repository")
commit_parser.add_argument("-m", "--message", help="Commit message", required=True)

# Add "push" subcommand
push_parser = subparsers.add_parser("push", help="Update remote refs")

args = parser.parse_args()

if args.command == "commit":
    print(f"Committing changes with message: {args.message}")
elif args.command == "push":
    print("Pushing changes to remote repository.")
Copier après la connexion

Best Practices

Here are some best practices to consider when using argparse:

  1. Always provide a help message: Use the help argument in add_argument to describe what each option does.
  2. Use sensible defaults: Provide default values where appropriate to ensure smooth execution without requiring all arguments.
  3. Validate inputs: Use choices and type to ensure that users provide valid inputs.
  4. Keep it simple: Try not to overload your script with too many arguments unless absolutely necessary.
  5. Structure your commands: For complex tools, use subparsers to separate different commands logically.

Conclusion

The argparse module is essential for writing professional, user-friendly Python scripts. By leveraging its features like positional and optional arguments, type checking, and subparsers, you can create intuitive and powerful command-line interfaces.

Next time you're building a Python script, consider using argparse to make it more flexible and accessible. Happy coding!


Feel free to reach out to me if you have questions or suggestions. Connect with me on:

  • LinkedIn
  • GitHub

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal