Leçon 8 / 10 — Chapitre 9: Mise en pratique : gestionnaire de tâches
Sauvegarder et charger les tâches en JSON
Huitième étape : persister les tâches entre deux exécutions du programme, avec json (vu dans Python Intermédiaire) — une @dataclass (vue au troisième chapitre) ne se convertit pas directement en JSON, il faut d'abord la transformer en dictionnaire.
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 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"):
with open(chemin) as fichier:
self.taches = [Tache(**d) for d in json.load(fichier)]
g = GestionnaireTaches()
g.taches.append(Tache("Ecrire le rapport", priorite=1))
g.sauvegarder()
g2 = GestionnaireTaches()
g2.charger()
print(g2.taches[0])
asdict(t) (du module dataclasses) convertit une @dataclass en dictionnaire normal, exploitable directement par json.dump() (vu dans Python Intermédiaire). Au chargement, Tache(**d) (déballage vu au quatrième chapitre) reconstruit chaque Tache à partir de son dictionnaire — les clés du dictionnaire doivent correspondre exactement aux attributs déclarés dans @dataclass.
Ce code affiche Tache(titre='Ecrire le rapport', priorite=1, terminee=False) : g2, un gestionnaire totalement séparé de g, retrouve bien la tâche sauvegardée par g, via le fichier taches.json.
À vous de jouer : sauvegardez un gestionnaire avec deux tâches, créez un nouveau gestionnaire vide, chargez le fichier, et vérifiez que les deux tâches sont bien récupérées.
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