Python : Charger un fichier

De www.yakakliker.org
def charger_liste(nom_fichier):
    """Charge les données depuis un fichier JSON au démarrage."""
    try:
        with open(nom_fichier, "r", encoding="utf-8") as f:
            return json.load(f)
    except FileNotFoundError:
        # Si le fichier n'existe pas, on retourne une liste vide
        return []
    except Exception as e:
        print(f"Erreur lors du chargement : {e}")
        return []

Exemple

import json  # Toujours en haut du fichier

def charger_liste(nom_fichier):
    """Récupère les données existantes ou crée une liste vide."""
    try:
        with open(nom_fichier, "r", encoding="utf-8") as f:
            return json.load(f)
    except FileNotFoundError:
        return []


def ajouter_invite(liste_invites):
    """Fonction pour ajouter un nom à la liste avec vérification."""
    nom = input("Entrez un nom (ou 'stop') : ").strip()

    if nom.lower() == "stop":
        return False

    if nom == "" or nom.isdigit():
        print("Erreur : Le nom ne peut pas être vide ou un simple nombre.")
    else:
        try:
            age = int(input(f"Âge de {nom} : "))
            nouvel_invite = {"nom": nom, "age": age}
            liste_invites.append(nouvel_invite)
            print("Invité enregistré.")
        except ValueError:
            print("Erreur : L'âge doit être un nombre entier.")

    return True

def sauvegarder_liste(liste_a_sauver, nom_fichier):
    """Enregistre la liste au format JSON."""
    try:
        with open(nom_fichier, "w", encoding="utf-8") as f:
            # On utilise le paramètre 'liste_a_sauver' et non la variable globale
            json.dump(liste_a_sauver, f, indent=4, ensure_ascii=False)
        print(f"Sauvegarde réussie dans {nom_fichier}")
    except Exception as e:
        print(f"Erreur lors de la sauvegarde : {e}")

# --- PROGRAMME PRINCIPAL ---
FICHIER = "mes_invites.json"

# 1. Chargement au démarrage
invites = charger_liste(FICHIER)
print(f"--- Bienvenue ({len(invites)} invités déjà enregistrés) ---")

# 2. Boucle d'interaction
en_cours = True
while en_cours:
    try:
        en_cours = ajouter_invite(invites)
    except Exception as e:
        print(f"Une erreur inattendue est survenue : {e}")

# 3. Affichage et Sauvegarde finale
if invites:
    print("\nLISTE ACTUELLE :")
    for i in invites:
        print(f"- {i['nom']} ({i['age']} ans)")

    sauvegarder_liste(invites, FICHIER)
else:
    print("La liste est vide.")

Analyse de la structure

  • FICHIER = "mes_invites.json" : En écrivant le nom du fichier en majuscules, on indique que c'est une constante. C'est une convention pour les valeurs qui ne changent pas durant l'exécution.
  • Le flux de données : Le programme suit maintenant un cycle de vie complet : Lecture -> Traitement -> Écriture.