PaliSkill
← Python avancé

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'argparse non encore vue) limite action à ces trois valeurs précises, refusant automatiquement toute autre saisie.
  • nargs="?" rend titre optionnel (nécessaire pour l'action "lister", qui n'a besoin d'aucun titre).
  • g.charger() puis g.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.