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 :
Image par auteur
Obtenez une liste de toutes les tâches de la liste :
Image par auteur
Et supprimez également une tâche (en utilisant son index) une fois que vous l’avez terminée :
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 :
- argparse pour l’analyse des arguments de ligne de commande
- système d’exploitation pour les opérations sur les fichiers
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-leparser
). - 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 help
pour 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.