« Python : Charger un fichier » : différence entre les versions
De www.yakakliker.org
(Page créée avec « <syntaxhighlight lang="python3"> 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 [] </syntaxhighlight> C... ») |
Aucun résumé des modifications |
||
| Ligne 13 : | Ligne 13 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Exemple === | |||
<syntaxhighlight lang="python3"> | |||
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.") | |||
</syntaxhighlight> | |||
==== Analyse de la structure ==== | |||
* '''<code>FICHIER = "mes_invites.json"</code>''' : 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'''. | |||
[[Catégorie:Python]] | [[Catégorie:Python]] | ||
[[Catégorie:Scripts]] | [[Catégorie:Scripts]] | ||
Dernière version du 21 janvier 2026 à 14:26
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.