Créez une application en ligne de commande avec Python en 7 étapes faciles


c_build_commandline_app_python_7_easy_steps_1 Créez une application en ligne de commande avec Python en 7 étapes faciles Intelligence artificielle c_build_commandline_app_python_7_easy_steps_1 Créez une application en ligne de commande avec Python en 7 étapes faciles Intelligence artificielle
Image par auteur

Construire des projets simples est un excellent moyen d’apprendre Python et n’importe quel langage de programmation en général. Vous pouvez apprendre la syntaxe pour écrire des boucles for, utiliser les fonctions intégrées, lire des fichiers et bien plus encore. Mais ce n’est que lorsque vous commencez à construire quelque chose que vous « apprenez » réellement.

En suivant l’approche « apprendre en construisant », codons une application simple de liste de tâches que nous pouvons exécuter sur la ligne de commande. En cours de route, nous explorerons des concepts tels que l’analyse des arguments de ligne de commande et l’utilisation de fichiers et de chemins de fichiers. Nous reviendrons également sur les bases comme la définition de fonctions personnalisées.

Alors, commençons!

En codant ce didacticiel, vous pourrez créer une application de liste de tâches que vous pourrez exécuter sur la ligne de commande. D’accord, alors que voudriez-vous que l’application fasse ?

Comme les listes de tâches sur papier, vous devez pouvoir ajouter des tâches, rechercher toutes les tâches et supprimer des tâches (oui, les barrer ou les marquer comme terminées sur papier) après les avoir terminées, n’est-ce pas ? Nous allons donc créer une application qui nous permettra d’effectuer les opérations suivantes.

Ajoutez des tâches à la liste :

c_build_commandline_app_python_7_easy_steps_2 Créez une application en ligne de commande avec Python en 7 étapes faciles Intelligence artificielle c_build_commandline_app_python_7_easy_steps_2 Créez une application en ligne de commande avec Python en 7 étapes faciles Intelligence artificielle
Image par auteur

Obtenez une liste de toutes les tâches de la liste :

c_build_commandline_app_python_7_easy_steps_3 Créez une application en ligne de commande avec Python en 7 étapes faciles Intelligence artificielle c_build_commandline_app_python_7_easy_steps_3 Créez une application en ligne de commande avec Python en 7 étapes faciles Intelligence artificielle
Image par auteur

Et supprimez également une tâche (en utilisant son index) une fois que vous l’avez terminée :

c_build_commandline_app_python_7_easy_steps_4 Créez une application en ligne de commande avec Python en 7 étapes faciles Intelligence artificielle c_build_commandline_app_python_7_easy_steps_4 Créez une application en ligne de commande avec Python en 7 étapes faciles Intelligence artificielle
Image par auteur

Maintenant, commençons à coder !

Tout d’abord, créez un répertoire pour votre projet. Et dans le répertoire du projet, créez un fichier de script Python. Ce sera le fichier principal de notre application de liste de tâches. Appelons-le todo.py.

Vous n’avez besoin d’aucune bibliothèque tierce pour ce projet. Assurez-vous donc uniquement que vous utilisez une version récente de Python. Ce tutoriel utilise Python 3.11.

Dans le todo.py fichier, commencez par importer les modules requis. Pour notre application simple de liste de tâches, nous aurons besoin des éléments suivants :

Importons donc les deux :

import argparse
import os

Rappelez-vous que nous utiliserons des indicateurs de ligne de commande pour ajouter, répertorier et supprimer des tâches. Nous pouvons utiliser des options courtes et longues pour chaque argument. Pour notre application, utilisons ce qui suit :

  • -a ou --add pour ajouter des tâches
  • -l ou --list pour lister toutes les tâches
  • -r ou --remove pour supprimer des tâches à l’aide d’index

C’est ici que nous utiliserons le module argparse pour analyser les arguments fournis sur la ligne de commande. Nous définissons le create_parser() fonction qui effectue les opérations suivantes :

  • Initialise un ArgumentParser objet (appelons-le parser).
  • Ajoute des arguments pour ajouter, répertorier et supprimer des tâches en appelant le add_argument() méthode sur l’objet analyseur.

Lors de l’ajout d’arguments, nous ajoutons les options courtes et longues ainsi que le message d’aide correspondant. Voici donc le create_parser() fonction:

def create_parser():
    parser = argparse.ArgumentParser(description="Command-line Todo List App")
    parser.add_argument("-a", "--add", metavar="", help="Add a new task")
    parser.add_argument("-l", "--list", action="store_true", help="List all tasks")
    parser.add_argument("-r", "--remove", metavar="", help="Remove a task by index")
    return parser

Nous devons maintenant définir des fonctions pour effectuer les opérations de gestion de tâches suivantes :

  • Ajouter une tâche
  • Liste de toutes les tâches
  • Supprimer une tâche par son index

La fonction suivante add_task interagit avec un simple fichier texte pour gérer les éléments de la liste TO-DO. Il ouvre le fichier en mode « ajouter » et ajoute la tâche à la fin de la liste :

def add_task(task):
    with open("tasks.txt", "a") as file:
    file.write(task + "\n")

Remarquez comment nous avons utilisé le with instruction pour gérer le fichier. Cela garantit que le fichier est fermé après l’opération, même en cas d’erreur, minimisant ainsi les fuites de ressources.

Pour en savoir plus, lisez la section sur les gestionnaires de contexte pour une gestion efficace des ressources dans ce tutoriel sur l’écriture de code Python efficace.

Le list_tasks La fonction répertorie toutes les tâches en vérifiant si le fichier existe. Le fichier est créé uniquement lorsque vous ajoutez la première tâche. Nous vérifions d’abord si le fichier existe, puis lisons et imprimons les tâches. S’il n’y a actuellement aucune tâche, nous recevons un message utile. :

def list_tasks():
    if os.path.exists("tasks.txt"):
        with open("tasks.txt", "r") as file:
            tasks = file.readlines()
        	for index, task in enumerate(tasks, start=1):
                print(f"{index}. {task.strip()}")
    else:
        print("No tasks found.")

Nous mettons également en œuvre un remove_task fonction pour supprimer des tâches par index. L’ouverture du fichier en mode « écriture » ​​écrase le fichier existant. Nous supprimons donc la tâche correspondant à l’index et écrivons la liste TO-DO mise à jour dans le fichier :

def remove_task(index):
    if os.path.exists("tasks.txt"):
        with open("tasks.txt", "r") as file:
            tasks = file.readlines()
        with open("tasks.txt", "w") as file:
            for i, task in enumerate(tasks, start=1):
                if i != index:
                    file.write(task)
        print("Task removed successfully.")
    else:
        print("No tasks found.")

Nous avons configuré l’analyseur pour analyser les arguments de ligne de commande. Et nous avons également défini les fonctions permettant d’effectuer les tâches d’ajout, de liste et de suppression de tâches. Alors, quelle est la prochaine étape ?

Vous l’avez probablement deviné. Il nous suffit d’appeler la fonction correcte en fonction de l’argument de ligne de commande reçu. Définissons un main() fonction pour analyser les arguments de ligne de commande à l’aide de la ArgumentParser objet que nous avons créé à l’étape 3.

Sur la base des arguments fournis, appelez les fonctions de gestion des tâches appropriées. Cela peut être fait en utilisant une simple échelle if-elif-else comme celle-ci :

def main():
    parser = create_parser()
    args = parser.parse_args()

    if args.add:
        add_task(args.add)
    elif args.list:
        list_tasks()
    elif args.remove:
        remove_task(int(args.remove))
    else:
        parser.print_help()

if __name__ == "__main__":
    main()

Vous pouvez maintenant exécuter l’application de liste de tâches à partir de la ligne de commande. Utilisez l’option courte h ou l’option longue helppour obtenir des informations sur l’utilisation :

$ python3 todo.py --help
usage: todo.py [-h] [-a] [-l] [-r]

Command-line Todo List App

options:
  -h, --help  	show this help message and exit
  -a , --add  	Add a new task
  -l, --list  	List all tasks
  -r , --remove   Remove a task by index

Initialement, il n’y a aucune tâche dans la liste, donc en utilisant --list pour lister toutes les tâches, imprimez « Aucune tâche trouvée » :

$ python3 todo.py --list
No tasks found.

Maintenant, nous ajoutons un élément à la liste TO-DO comme ceci :

$ python3 todo.py -a "Walk 2 miles"

Lorsque vous répertoriez les éléments maintenant, vous devriez pouvoir voir la tâche ajoutée :

$ python3 todo.py --list
1. Walk 2 miles

Parce que nous avons ajouté le premier élément, le fichier tâches.txt a été créé (reportez-vous à la définition du list_tasks fonction à l’étape 4) :

Ajoutons une autre tâche à la liste :

$ python3 todo.py -a "Grab evening coffee!"

Et un autre:

$ python3 todo.py -a "Buy groceries"

Et maintenant, obtenons la liste de toutes les tâches :

$ python3 todo.py -l
1. Walk 2 miles
2. Grab evening coffee!
3. Buy groceries

Supprimons maintenant une tâche par son index. Supposons que nous en ayons fini avec le café du soir (et, espérons-le, pour la journée), nous le supprimons donc comme indiqué :

$ python3 todo.py -r 2
Task removed successfully.

La liste TO-DO modifiée est la suivante :

$ python3 todo.py --list
1. Walk 2 miles
2. Buy groceries

Bon, la version la plus simple de notre application est prête. Alors, comment pouvons-nous aller plus loin ? Voici quelques choses que vous pouvez essayer :

  • Que se passe-t-il lorsque vous utilisez une option de ligne de commande non valide (par exemple : -w ou --wrong) ? Le comportement par défaut (si vous vous souvenez de l’échelle if-elif-else) consiste à imprimer le message d’aide, mais il y aura également une exception. Essayez d’implémenter la gestion des erreurs à l’aide de blocs try-sauf.
  • Testez votre application en définissant des cas de test qui incluent des cas extrêmes. Pour commencer, vous pouvez utiliser le module unittest intégré.
  • Améliorez la version existante en ajoutant une option permettant de spécifier la priorité de chaque tâche. Essayez également de trier et de récupérer les tâches par priorité.

▶️ Le code de ce tutoriel est sur GitHub.

Dans ce didacticiel, nous avons créé une simple application de liste de tâches en ligne de commande. Ce faisant, nous avons appris à utiliser le module argparse intégré pour analyser les arguments de ligne de commande. Nous avons également utilisé les entrées de ligne de commande pour effectuer les opérations correspondantes sur un simple fichier texte sous le capot.

Alors, où allons-nous ensuite ? Eh bien, les bibliothèques Python comme Les types facilitez la création d’applications en ligne de commande. Et nous en créerons un en utilisant Typer dans un prochain didacticiel Python. En attendant, continuez à coder !

Bala Priya C est un développeur et rédacteur technique indien. Elle aime travailler à l’intersection des mathématiques, de la programmation, de la science des données et de la création de contenu. Ses domaines d’intérêt et d’expertise incluent le DevOps, la science des données et le traitement du langage naturel. Elle aime lire, écrire, coder et prendre le café ! Actuellement, elle travaille à l’apprentissage et au partage de ses connaissances avec la communauté des développeurs en créant des didacticiels, des guides pratiques, des articles d’opinion, etc. Bala crée également des aperçus de ressources attrayants et des didacticiels de codage.





Source link