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")