Python : Ecrire dans un fichier
De www.yakakliker.org
En Python, la manipulation de fichiers est très directe.
Nous allons utiliser l'instruction with open(), qui est la méthode standard et sécurisée pour ouvrir, écrire, puis refermer automatiquement un fichier.
Exemples
invites = ["Alice", "Bob", "Charlie"]
# 'w' signifie 'write' (écriture). Attention : cela écrase le fichier existant.
# 'a' signifie 'append' (ajouter). Cela ajoute à la fin du fichier.
with open("invites.txt", "w", encoding="utf-8") as fichier:
for nom in invites:
fichier.write(nom + "\n") # \n permet de passer à la ligne suivante
def sauvegarder_liste(liste, nom_fichier):
"""Enregistre chaque élément de la liste dans un fichier texte."""
try:
with open(nom_fichier, "w", encoding="utf-8") as f:
for item in liste:
f.write(item + "\n")
print(f"Sauvegarde réussie dans {nom_fichier}")
except Exception as e:
print(f"Erreur lors de la sauvegarde : {e}")
# --- Simulation du programme ---
mes_invites = ["Alice", "Marc", "Sophie"]
# Appel de la fonction de sauvegarde
sauvegarder_liste(mes_invites, "mes_invites.txt")
- Le gestionnaire de contexte (
with) : C'est une bonne pratique absolue. Si le programme plante pendant l'écriture, le fichier sera quand même correctement refermé par Python. - L'encodage (
utf-8) : Il est fortement recommandé de le préciser pour gérer correctement les accents français (é, à, ç), sinon ils risquent de mal s'afficher sur certains systèmes. - Le mode "a" vs "w" :
w(write) : Si le fichier existe déjà, il est vidé et remplacé par les nouvelles données.a(append) : Les nouvelles données sont ajoutées à la suite de ce qui existe déjà.
Autre exemple
- On combine Fonctions, Ecriture dans un fichier, Test en cas d'erreur et boucle
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 # On indique qu'il faut arrêter
if nom == "" or nom.isdigit():
# On simule une petite gestion d'erreur logique
print("Erreur : Le nom ne peut pas être vide ou un simple nombre.")
else:
liste_invites.append(nom)
print(f"Succès : {nom} ajouté.")
return True
def sauvegarder_liste(liste, nom_fichier):
"""Enregistre chaque élément de la liste dans un fichier texte."""
try:
with open(nom_fichier, "w", encoding="utf-8") as f:
for item in liste:
f.write(item + "\n")
print(f"Sauvegarde réussie dans {nom_fichier}")
except Exception as e:
print(f"Erreur lors de la sauvegarde : {e}")
# --- Programme principal ---
invites = []
en_cours = True
print("--- Gestionnaire d'invités Sécurisé ---")
while en_cours:
try:
en_cours = ajouter_invite(invites)
except Exception as e:
print(f"Une erreur inattendue est survenue : {e}")
print(f"\nListe finale ({len(invites)} personnes) : {invites}")
# Appel de la fonction de sauvegarde
sauvegarder_liste(invites, "mes_invites.txt")