Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🐍
Intermediaire 20 min Python

Gestion des fichiers en Python

Pourquoi Gestion des fichiers en Python ?

Le gestionnaire de fichiers en Python est une compétence cruciale pour tout développeur, que ce soit backend ou frontend. Au quotidien, vous pouvez avoir besoin de lire, écrire, modifier et supprimer des fichiers sur le système d'exploitation. Que ce soit pour stocker des données temporaires, sauvegarder des configurations, ou simplement gérer des ressources en ligne, comprendre comment manipuler les fichiers est essentiel.

Un cas d'utilisation concret pourrait être la création d'un simple application de gestionnaire de notes. Vous voudriez permettre aux utilisateurs de créer, lire, modifier et supprimer leurs notes facilement. C'est là que le gestion des fichiers en Python intervient pour stocker ces notes sur le disque.

Prerequis

  • Connaissance de base de Python (v3.x recommandé)
  • Familiarité avec les structures de données de base (listes, dictionnaires, etc.)
  • Compréhension des types de variables et des opérations de base
  • Un éditeur de code ou un environnement de développement intégré (IDE) comme Visual Studio Code

Concepts fondamentaux

1. Ouvrir et Fermer les Fichiers

La gestion des fichiers en Python commence par l'ouverture d'un fichier. Il existe plusieurs modes d'ouverture, tels que r pour lecture, w pour écriture (écrase le contenu existant), a pour écriture (ajoute au contenu existant), et x pour création exclusive.

with open('mon_fichier.txt', 'r') as file:
    contenu = file.read()

2. Lire un Fichier

Pour lire le contenu d'un fichier, vous pouvez utiliser la méthode read(), qui lit tout le contenu du fichier.

with open('mon_fichier.txt', 'r') as file:
    contenu = file.read()
    print(contenu)

3. Écrire dans un Fichier

Pour écrire dans un fichier, utilisez la méthode write() pour écraser tout le contenu existant ou writelines() pour écrire une liste de lignes.

with open('mon_fichier.txt', 'w') as file:
    file.write("Bonjour, monde!")

4. Ajouter du Contenu à un Fichier

Pour ajouter du contenu à la fin d'un fichier sans écraser ce qui est déjà présent, utilisez le mode a.

with open('mon_fichier.txt', 'a') as file:
    file.write("\nNouvelle ligne.")

5. Gérer les Erreurs

Il est important de gérer les erreurs lors de l'ouverture et de la manipulation des fichiers.

try:
    with open('mon_fichier.txt', 'r') as file:
        contenu = file.read()
except FileNotFoundError:
    print("Le fichier n'existe pas.")

6. Utiliser with pour Gérer les Fichiers

La clause with est recommandée car elle gère automatiquement la fermeture du fichier, même si une erreur se produit.

with open('mon_fichier.txt', 'r') as file:
    contenu = file.read()

Mise en pratique : Projet Fil Rouge

1. Créer un Mini-Projet Complet et Réaliste

Nous allons créer une application simple pour stocker des notes. L'utilisateur sera capable de créer, lire, modifier et supprimer des notes.

Structure des Fichiers

notes_app/
├── app.py
└── notes.txt

Étape 1 : Installer les Dépendances (Si Nécessaire)

pip install colorama

Étape 2 : Créer le Code app.py

from colorama import init, Fore, Style

init(autoreset=True)

def lire_notes():
    try:
        with open('notes.txt', 'r') as file:
            notes = file.readlines()
            if not notes:
                print(Fore.YELLOW + "Aucune note n'est enregistrée.")
            else:
                for i, note in enumerate(notes, start=1):
                    print(f"{i}. {note.strip()}")
    except FileNotFoundError:
        print(Fore.RED + "Le fichier de notes n'existe pas.")

def ajouter_note(note):
    with open('notes.txt', 'a') as file:
        file.write(f"{note}\n")
        print(Fore.GREEN + f"Note ajoutée: {note}")

def modifier_note(index, nouvelle_note):
    try:
        with open('notes.txt', 'r') as file:
            notes = file.readlines()
        
        if index < 1 or index > len(notes):
            print(Fore.RED + "Index invalide.")
            return
        
        notes[index - 1] = f"{nouvelle_note}\n"
        with open('notes.txt', 'w') as file:
            file.writelines(notes)
        
        print(Fore.GREEN + f"Note modifiée: {nouvelle_note}")
    except FileNotFoundError:
        print(Fore.RED + "Le fichier de notes n'existe pas.")

def supprimer_note(index):
    try:
        with open('notes.txt', 'r') as file:
            notes = file.readlines()
        
        if index < 1 or index > len(notes):
            print(Fore.RED + "Index invalide.")
            return
        
        del notes[index - 1]
        with open('notes.txt', 'w') as file:
            file.writelines(notes)
        
        print(Fore.GREEN + f"Note supprimée.")
    except FileNotFoundError:
        print(Fore.RED + "Le fichier de notes n'existe pas.")

def afficher_menu():
    print("""
1. Lire les notes
2. Ajouter une note
3. Modifier une note
4. Supprimer une note
5. Quitter
""")

def main():
    while True:
        afficher_menu()
        choix = input("Choisissez une option: ")
        
        if choix == '1':
            lire_notes()
        elif choix == '2':
            note = input("Entrez la note à ajouter: ")
            ajouter_note(note)
        elif choix == '3':
            index = int(input("Entrez l'index de la note à modifier: "))
            nouvelle_note = input("Entrez la nouvelle note: ")
            modifier_note(index, nouvelle_note)
        elif choix == '4':
            index = int(input("Entrez l'index de la note à supprimer: "))
            supprimer_note(index)
        elif choix == '5':
            print(Fore.CYAN + "Au revoir!")
            break
        else:
            print(Fore.RED + "Option invalide. Veuillez choisir une option valide.")

if __name__ == "__main__":
    main()

Étape 3 : Exécuter l'Application

python app.py

Erreurs Frequentes et Debugging

  1. FileNotFoundError: Le fichier spécifié n'existe pas

    # ❌ Mauvais
    with open('mon_fichier.txt', 'r') as file:
        contenu = file.read()
    
    # ✅ Correct
    try:
        with open('mon_fichier.txt', 'r') as file:
            contenu = file.read()
    except FileNotFoundError:
        print("Le fichier n'existe pas.")
    
  2. IndentationError: Erreur d'indentation

    # ❌ Mauvais
    if True:
        print("Ceci est une erreur.")
    
    # ✅ Correct
    if True:
        print("C'est bon!")
    
  3. IOError: Erreur lors de l'écriture dans un fichier

    # ❌ Mauvais
    with open('mon_fichier.txt', 'w') as file:
        file.write("Contenu")
    
    # ✅ Correct
    try:
        with open('mon_fichier.txt', 'w') as file:
            file.write("Contenu")
    except IOError:
        print("Erreur lors de l'écriture dans le fichier.")
    
  4. ValueError: Erreur de valeur incorrecte

    # ❌ Mauvais
    index = int(input("Entrez un nombre: "))
    notes[index - 1]
    
    # ✅ Correct
    try:
        index = int(input("Entrez un nombre: "))
        notes[index - 1]
    except ValueError:
        print("Veuillez entrer un nombre valide.")
    
  5. IndexError: Index invalide

    # ❌ Mauvais
    del notes[index - 1]
    
    # ✅ Correct
    try:
        del notes[index - 1]
    except IndexError:
        print("Index invalide.")
    

Pouraller Plus loin

  1. Gestion de Fichiers en Mode Binaire: Apprendre à lire et écrire des fichiers en mode binaire pour travailler avec des données binaires comme des images ou des vidéos.

  2. Système de Gestion de Base de Données (DBMS): Comprendre comment utiliser les fichiers pour stocker des données structurées, y compris la gestion des relations entre les données.

  3. Traitement Asynchrone: Apprendre à gérer la lecture et l'écriture de fichiers de manière asynchrone pour améliorer les performances de l'application.

Défi Pratique

Créez une application simple qui permet de stocker des contacts en utilisant un fichier. Chaque contact devrait avoir un nom, un numéro de téléphone et une adresse e-mail. Les utilisateurs doivent être capables d'ajouter, lire, modifier et supprimer des contacts.


Ce tutoriel couvre les concepts fondamentaux de gestion des fichiers en Python, montre comment mettre en pratique ces concepts dans un projet réel, et aborde les erreurs courantes pour aider à déboguer le code.

Besoin d'aide sur Python ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Comment lister tous les fichiers d'un répertoire en Python?
Pour lister tous les fichiers d'un répertoire en Python, vous pouvez utiliser la fonction `os.listdir()` de la bibliothèque `os`. Voici un exemple :
Comment créer un nouveau fichier et y écrire des données?
Pour créer un nouveau fichier et y écrire des données en Python, vous pouvez utiliser la fonction `open()` avec le mode 'w' (write). Voici comment faire :
Quelle est la différence entre les modes 'r', 'w' et 'a' lors de l'utilisation de la fonction `open()`?
Lors de l'utilisation de la fonction `open()`, le mode indique l'action à effectuer sur le fichier. Le mode 'r' signifie 'read' (lecture), 'w' signifie 'write' (écriture) et écrase le contenu existant si le fichier existe déjà, tandis que 'a' signifie 'append' (ajout) et ajoute le nouveau contenu à la fin du fichier s'il existe déjà.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.