logo oujood
🔍

Python : ouverture et gestion des fichiers

Avant de lire ou d'écrire dans un fichier, Python exige qu'on l'ouvre avec open(). Cette page explique comment ça fonctionne : modes d'accès, fermeture propre, gestion des erreurs.

OUJOOD.COM

La fonction open() en Python

Pour lire ou écrire dans un fichier, Python doit d'abord l'ouvrir. C'est le rôle de la fonction native open() : elle crée un objet fichier (aussi appelé file handle) qui fait le lien entre votre script et les données sur le disque.

La syntaxe de base :

f = open(chemin_accès_au_fichier, mode)

Le premier argument est le chemin du fichier. Si le fichier se trouve dans le même dossier que votre script, son nom seul suffit. Sinon, indiquez le chemin complet — absolu ou relatif. Sous Windows, Python accepte aussi bien / que \\ comme séparateur.

Exemple pour un fichier oujood.txt dans C:\exemple\ :

open('c:/exemple/oujood.txt', 'r')

Les modes d'ouverture

Le second argument définit ce que vous voulez faire avec le fichier. Voici les modes disponibles :

ModeDescription
rLecture seule. Le fichier doit exister, sinon Python lève une erreur.
wÉcriture. Crée le fichier s'il n'existe pas ; écrase le contenu existant.
aAjout en fin de fichier (append). Crée le fichier si nécessaire, sans toucher au contenu existant.
r+Lecture et écriture. Le fichier doit exister. L'écriture repart du début.
w+Écriture et lecture. Crée ou vide le fichier.
a+Ajout et lecture. Crée le fichier si nécessaire, conserve l'existant.
rb / wbModes binaires pour les fichiers non textuels : images, PDF, audio…

Mode texte et mode binaire

Par défaut, Python ouvre les fichiers en mode texte : les données sont lues comme des chaînes de caractères, décodées en UTF-8. Si vous travaillez avec des fichiers binaires (images, archives…), ajoutez b au mode.

Ces deux écritures sont donc équivalentes :

  📋 Copier le code

f = open("oujood.txt")       # équivaut à open("oujood.txt", "rt")
f = open("oujood.txt", "rt") # mode texte + lecture : valeurs par défaut

⚠️ Attention : si le fichier n'existe pas, Python lève une exception FileNotFoundError. Pensez toujours à gérer cette erreur.

Exemple 1 — Lire un fichier ligne par ligne

L'approche la plus simple pour parcourir un fichier texte : ouvrir en mode r puis itérer sur l'objet fichier avec une boucle for. Python lit une ligne à la fois sans tout charger en mémoire, ce qui fonctionne même sur de gros fichiers.

  📋 Copier le code

# Ouverture en lecture — erreur si le fichier est absent
fichier = open('oujood.txt', 'r')
# La boucle for lit une ligne à la fois, sans tout charger en RAM
for ligne in fichier:
    print(ligne)  # chaque ligne contient son \n de fin
# Fermer le fichier pour libérer les ressources système
fichier.close()

Itérer directement sur l'objet fichier est plus efficace que readlines(), qui charge toutes les lignes d'un coup en mémoire.

Exemple 2 — Ouverture sécurisée avec try/except

Un fichier peut être absent, déplacé, ou illisible. Le bloc try/except intercepte ces situations et affiche un message clair plutôt qu'un traceback brut — indispensable dès que votre code tourne sur la machine de quelqu'un d'autre.

  📋 Copier le code

# try : on tente l'ouverture
try:
    fichier = open('oujood.txt', 'r')
    for ligne in fichier:
        print(ligne)
    fichier.close()
# FileNotFoundError : le fichier est introuvable
except FileNotFoundError:
    print("Erreur : le fichier spécifié est introuvable.")
# Exception générique pour les autres erreurs imprévues
except Exception as e:
    print(f"Une erreur inattendue est survenue : {e}")

Exemple 3 — Le gestionnaire de contexte with open()

C'est la façon d'ouvrir un fichier en Python 3. Le mot-clé with garantit que le fichier est fermé automatiquement dès la fin du bloc, même si une exception survient à l'intérieur. Pas besoin d'appeler close().

  📋 Copier le code

# with ouvre le fichier et le ferme tout seul en sortant du bloc
# encoding='utf-8' évite les erreurs sur les caractères accentués
with open('oujood.txt', 'r', encoding='utf-8') as fichier:
    for ligne in fichier:
        print(ligne.strip())  # strip() retire le \n en fin de ligne
# Ici le fichier est déjà fermé, automatiquement

Préciser encoding='utf-8' reste une bonne habitude : avant Python 3.15, l'encodage utilisé dépend de l'OS et peut provoquer des erreurs sur les caractères accentués. Même sur les versions récentes, le préciser explicitement rend votre code plus lisible et portable.

Fermer un fichier avec close()

Quand on n'utilise pas with, il faut fermer le fichier manuellement. Un fichier laissé ouvert mobilise des ressources système et peut bloquer d'autres programmes qui veulent y accéder. Sur les fichiers en écriture, des données peuvent aussi rester dans le tampon et ne jamais atteindre le disque.

La syntaxe :

objet_fichier.close()

Exemple 4 — Vérifier l'état d'un fichier avant de le fermer

La propriété .closed retourne True si le fichier est fermé, False s'il est encore ouvert. Voici comment s'en servir pour une fermeture propre :

  📋 Copier le code

try:
    fichier = open('oujood.txt', 'r', encoding='utf-8')
    # .closed vaut False si le fichier est encore ouvert
    if not fichier.closed:
        print("Fichier ouvert avec succès.")
        # lecture ou écriture ici
        fichier.close()
        print(f"Fichier fermé : {fichier.closed}")  # affiche True
except FileNotFoundError:
    print("Échec : le fichier est introuvable ou le chemin est incorrect.")

→ Voir le tutoriel complet sur la gestion des exceptions Python

Par carabde | Mis à jour le 20 avril 2026