Leçon 10 / 10 — Chapitre 9: Mise en pratique : gestionnaire de tâches
Cas pratique : un script complet en ligne de commande
Cette dernière leçon assemble toutes les briques du chapitre en un script complet, piloté depuis la ligne de commande avec argparse (vu au huitième chapitre).
import argparse
import json
from dataclasses import dataclass, asdict
@dataclass
class Tache:
titre: str
priorite: int = 2
terminee: bool = False
class GestionnaireTaches:
def __init__(self):
self.taches = []
def ajouter(self, titre, priorite=2):
self.taches.append(Tache(titre, priorite))
def marquer_terminee(self, titre):
for t in self.taches:
if t.titre == titre:
t.terminee = True
return
raise KeyError(titre)
def sauvegarder(self, chemin="taches.json"):
with open(chemin, "w") as fichier:
json.dump([asdict(t) for t in self.taches], fichier)
def charger(self, chemin="taches.json"):
try:
with open(chemin) as fichier:
self.taches = [Tache(**d) for d in json.load(fichier)]
except FileNotFoundError:
self.taches = []
def lister(self):
for t in sorted(self.taches, key=lambda t: t.priorite):
statut = "fait" if t.terminee else "a faire"
print(f"[{statut}] {t.titre} (priorite {t.priorite})")
if __name__ == "__main__":
analyseur = argparse.ArgumentParser()
analyseur.add_argument("action", choices=["ajouter", "terminer", "lister"])
analyseur.add_argument("titre", nargs="?")
analyseur.add_argument("--priorite", type=int, default=2)
arguments = analyseur.parse_args()
g = GestionnaireTaches()
g.charger()
if arguments.action == "ajouter":
g.ajouter(arguments.titre, arguments.priorite)
elif arguments.action == "terminer":
g.marquer_terminee(arguments.titre)
elif arguments.action == "lister":
g.lister()
g.sauvegarder()
Ce que fait chaque partie :
choices=["ajouter", "terminer", "lister"](une option d'argparsenon encore vue) limiteactionà ces trois valeurs précises, refusant automatiquement toute autre saisie.nargs="?"rendtitreoptionnel (nécessaire pour l'action"lister", qui n'a besoin d'aucun titre).g.charger()puisg.sauvegarder()(vus dans ce chapitre) entourent chaque exécution, pour que les modifications persistent d'un lancement à l'autre.
Lancé avec python taches.py ajouter "Ecrire le rapport" --priorite 1, ce script ajoute la tâche et la sauvegarde ; relancé avec python taches.py lister, il affiche l'état à jour, incluant cette tâche.
À vous de jouer : ajoutez une quatrième action "supprimer" à choices, avec la logique correspondante dans le bloc if/elif.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 87 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès