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 l'attestation finale.
9 000 XOF / 13,72 € / 14,95 $
Débloquez les 94 leçons restantes de ce module
Pour vous communiquer où envoyer le paiement.
Moyen de paiement souhaité
Nous vous contactons pour le paiement — activé dès réception.