Pour lire ou écrire dans un fichier avec Python, nous devons d’abord l’ouvrir. En effet, Python communique avec le système d’exploitation, qui accède aux données stockées dans les fichiers.
Un fichier est un emplacement de disque nommé, utilisé pour stocker des données. Afin de pouvoir réutiliser vos données, vous devez les stocker en mémoire via un fichier. En Python, la gestion des fichiers se fait à l’aide d’un objet fichier.

Aucun module spécial n’est requis pour lire ou écrire dans un fichier avec Python. Toutefois, Python ne recherche que dans les fichiers qui se trouvent dans le même répertoire que votre programme.
Ouvrir un fichier avec Python
Pour lire ou écrire dans un fichier avec Python, votre programme doit indiquer où se trouve ce fichier. Par défaut, Python suppose que ce fichier se trouve dans le même répertoire que le programme que vous exécutez.
Dans Bureau
, créez un répertoire, nommez-le exemples
.
Dans IDLE, sélectionnez File -> New File
et tapez ce qui suit :
Première ligne du texte
Deuxième ligne du texte
Troisième ligne du texte
Enregistrez ce fichier dans votre répertoire exemples
sous le nom exemple.txt
.
Dans IDLE, sélectionnez File -> New File
et tapez ce code.
fichier = open('exemple.txt', 'r')
contenu = fichier.read()
print(contenu)
fichier.close()
Enregistrez-le sous ouvrir_fichier.py
dans votre répertoire exemples
, puis exécutez-le en appuyant sur la touche F5
.
Le contenu de exemple.txt
, s’affichera dans le shell
.
Première ligne de texte
Deuxième ligne de texte
Troisième ligne de texte
open()
: ouvre un fichier (comme lorsque vous ouvrez un livre) et renvoie un objet.
À l’aide d’un curseur, Python garde une trace de l’emplacement actuel dans le fichier et agit un peu comme un signet. Le curseur commence au début du fichier, mais lorsque nous lisons ou écrivons des données, il se déplace vers la fin.
Le premier argument de la méthode open()
est le nom du fichier à ouvrir. Le second argument est le mode, 'r'
est une chaîne d’un seul caractère, il indique à Python que vous voulez lire le fichier.
Voici un tableau qui répertorie les modes possibles pour lire ou écrire dans un fichier avec Python.
Modes | Description |
r | lecture seule |
r+ | lecture et écriture |
w | écriture uniquement |
w+ | écriture et lecture |
a | ajouter du contenu |
a+ | l’ajout et la lecture |
x | créer un fichier |
Quel type de valeur est renvoyé avec open()
?
En fait, c’est un objet fichier qui nous permet de travailler et d’interagir avec des fichiers existants dans notre programme Python.
Les objets fichier ont des attributs, tels que:
name
: le nom du fichier.closed
: True si le fichier est fermé, sinon c’est False.mode
: le mode utilisé pour ouvrir le fichier.
En fait, chaque classe Python possède des attributs et des méthodes. Nous aborderons ces concepts lorsque nous étudierons les classes.
Copiez-collez
les instructions si dessous dans le shell. Nous allons utiliser le module os
pour connaître le répertoire dans lequel nous travaillions, puis nous allons changer de répertoire si nécessaire.
>>> import os
>>> os.getcwd() # le repertoire de travail actuel
'/home/user'
Vous devez être dans le répertoire exemples
qui contient notre fichier exemple.txt
.
>>> os.chdir('/home/user/Bureau/exemples') # remplacez ce chemin par le vôtre
>>> fichier = open('exemple.txt', 'r')
>>> fichier.mode
'r'
>>> fichier.name
'exemple.txt'
>>> fichier.closed
False
Ouverture, lecture et fermeture d’un fichier Python
Les autres options d’ouverture d’un fichier avec Python incluent :w
pour l’écriture et a
pour l’ajout. Si vous appelez open()
uniquement avec le nom du fichier (en omettant le mode), la valeur par défaut sera r
.read()
: indique à Python que vous souhaitez lire le contenu du fichier entier dans une chaîne de caractère, que nous avons attribué à une variable appelée contenu
.
La troisième instruction affiche cette chaîne.
Lorsque vous exécutez le programme, vous verrez que les caractères de nouvelle ligne \n
sont traités comme tous les autres caractères du fichier. close()
: arrête toutes les ressources associées à l’ouverture de l’objet, en fermant le fichier (vous avez terminé la lecture, donc vous fermez votre livre).
L’instruction with pour ouvrir et fermer un fichier
L’instruction with
permet de simplifier la gestion des ressources et aide à écrire un code plus expressif.
Étant donné que chaque appel à la fonction open() doit avoir un appel correspondant avec la fonction close()
, l’instruction with
ferme automatiquement le fichier lorsque le code est exécuté.
with open('exemple.txt', 'r') as fichier:
contenu = fichier.read()
print(contenu)
L’exécution de ce code vous donnera le même résultat.
L’ajout d’un b
devant chaque mode, vous donne la valeur en binaire.
L’organisation des fichiers sur votre ordinateur
Un chemin d’un fichier spécifie son emplacement dans le système de votre ordinateur. Un chemin de fichier contient la séquence de répertoires vers le fichier, en commençant par le répertoire racine en haut du système pour arriver au fichier.
Voici le chemin du fichier exemple.txt sous linux : /home/user/Bureau/exemple.txt
Les deux systèmes d’exploitation linux et macOS utilisent une barre oblique comme séparateur de répertoire.
Dans Microsoft Windows, le chemin commence généralement par une lettre, telle que C
. De plus, Microsoft Windows utilise une barre oblique inversée comme séparateur de répertoire. Voici à quoi ressemble un chemin dans Windows :C:\Users\utilisateur\Bureau\exemple.txt
Astuce : Les chemins Windows utilisent un \
comme séparateur, ce qui peut être problématique. Nous avons vu dans les chaînes de caractères Python qu’un \
est un caractère d’échappement. Si vous avez un répertoire nommé « test » et que vous écriviez « C:\test », Python traiterait \t
comme un caractère de tabulation.
La solution consiste à utiliser un raw string
pour représenter les chemins Windows. Mettez un r
devant le chemin : r"C:\test"
Spécifier l’emplacement d’un fichier
Python garde une trace du répertoire de travail actuel, c’est le répertoire dans lequel il recherche les fichiers. Lorsque vous exécutez un programme Python, le répertoire de travail actuel est le répertoire dans lequel ce programme est enregistré. Par exemple, c’est peut-être le chemin du fichier que vous avez ouvert dans IDLE
:C:\Users\utilisateur\Bureau\exemple.txt
Ensuite, voici le répertoire de travail actuel :
C:\Users\utilisateur\Bureau
Lorsque vous appelez la fonction open(), elle recherche le fichier spécifié dans le répertoire de travail actuel.
Le répertoire de travail actuel par défaut dans le shell
Python dépend du système d’exploitation. Vous pouvez trouver le répertoire de travail actuel en utilisant la fonction getcwd()
du module os
.
>>> import os
>>> os.getcwd()
'/home/user/Bureau/exemples'
Si vous voulez ouvrir un fichier dans un répertoire différent, vous devez indiquer où il se trouve. Vous pouvez le faire avec un chemin absolu ou avec un chemin relatif.
Un chemin absolu (comme tous les exemples ci-dessus) est celui qui commence à partir de la racine du système, et un chemin relatif est relatif au répertoire de travail actuel. Vous pouvez également changer le répertoire de travail actuel de Python à l’aide de la fonction chdir()
(abréviation de change directory).
Afin de changer le répertoire de travail actuel, nous utiliserons le module os
.
>>> os.chdir('/home/user/Documents')
>>> os.getcwd()
'/home/user/Documents'
Prenons un exemple
Supposons que notre programme lire_fichier.py
et un autre dossier appelé data
se trouvent dans le même répertoire. Aussi, à l’intérieur de data, on a deux fichiers appelés data1.txt
et data2.txt
. Voici comment ouvrir data1.txt
.open('data/data1.txt', 'r')
Ici, data/data1.txt
est un chemin relatif.
Pour aller dans le répertoire qui se trouve au-dessus du répertoire de travail actuel, vous pouvez utiliser deux points ..
open('../data1.txt', 'r')
.
De plus, Vous pouvez enchaîner les deux points pour remonter à plusieurs répertoires.
open('../../../data/data1.txt', 'r')
Ici, Python remonte trois répertoires au-dessus du répertoire de travail actuel.
Si nous reprenons l’exemple précédent, pour revenir au répertoire exemples
à partir du répertoire Documents
en utilisant le chemin relatif.
>>> os.chdir('../Bureau/exemples')
>>> os.getcwd()
'/home/user/Bureau/exemples'
Rappelez-vous, les deux points veulent dire, revenir un seul répertoire en arrière.
Lire un fichier avec read()
On utilise la méthode read()
pour lire le contenu d’un fichier en une seule chaîne de caractère ou lorsque l’on veut spécifier exactement le nombre de caractères à lire.
Sans argument, elle lit tout depuis le curseur du fichier actuel jusqu’à la fin. Cependant, passer un entier comme argument, indiquera le nombre de caractères à lire et le curseur se déplacera à partir de la position actuelle.
with open('exemple.txt', 'r') as fichier:
contenu = fichier.read(30)
print(contenu)
Ce qui affichera 30 caractères.
Première ligne du texte
Deuxiè
Avec la méthode read()
, tous les caractères, y compris toutes les lignes et les caractères de nouvelle ligne, forment une seule grande chaîne de caractère. Cependant, il est recommandé de stocker la sortie de read()
dans une variable car chaque appel que vous faites avec read()
va épuiser des ressources.
Donc, si le fichier est trop volumineux, vous devez écrire votre programme pour lire le fichier par blocs en utilisant une boucle for
ou while
et éviter cette méthode.
Lire un fichier avec readlines()
Les lignes d’un fichier se termine par un caractère spécial invisible appelé caractère de nouvelle ligne qui marque la fin de la ligne. Ainsi, le caractère de saut de ligne \n
sépare les caractères du fichier en plusieurs lignes.
On utilise readlines()
pour obtenir une liste de chaînes de caractères contenant les lignes du fichier.
with open('exemple.txt', 'r') as fichier:
contenu = fichier.readlines()
print(contenu)
Ce qui nous donne :
['Première ligne du texte\n', 'Deuxième ligne du texte\n', 'Troisième ligne du texte\n']
Notez que chaque ligne se termine par \n
. Python ne supprime aucun caractère quand il lit un fichier.
readlines()
stocke le contenu dans une chaîne de caractères, nous allons utiliser la méthode strip()
pour supprimer le caractère de saut de ligne.
for ligne in contenu:
print(ligne.strip())
Le résultat sera le suivant :
Première ligne du texte
Deuxième ligne du texte
Troisième ligne du texte
>>> type(contenu)
<class 'list'>
>>> type(ligne)
<class 'str'>
Nous allons afficher les éléments de notre fichier, du dernier au premier avec la fonction intégrée reversed()
.
for ligne in reversed(contenu):
print(ligne.strip())
Ce qui nous donne :
Troisième ligne du texte
Deuxième ligne du texte
Première ligne du texte
Ou encore trier les lignes selon un ordre alphabétique croissant avec la fonction sorted()
:
Deuxième ligne du texte
Première ligne du texte
Troisième ligne du texte
L’itération sur chaque ligne dans un fichier
Supposons que nous voulons effectuer la même tâche à chaque ligne du fichier. À chaque itération, le curseur est déplacé au début de la ligne suivante.
Ce code ouvre le fichier exemple.txt
et affiche la longueur de chaque ligne.
for ligne in contenu:
print(len(ligne.strip()))
Notez qu’on a supprimé le saut de ligne.
23
23
24
Lire un fichier avec readline()
La méthode readline()
, sans s
renvoie une seule ligne du fichier.
with open('exemple.txt', 'r') as fichier:
contenu = fichier.readline()
print(contenu)
Première ligne du texte
Ou encore afficher un nombre défini de caractères.
with open('exemple.txt', 'r') as fichier:
contenu = fichier.readline(10)
print(contenu)
Ce qui affiche les 10 premiers caractères.
Première l
Créer un fichier avec Python
On peut créer un fichier avec Python en utilisant le mode x
comme paramètre.
# nous allons d'abbord vérifier notre répertoire actuel
>>> os.getcwd()
'/home/user/Bureau/exemples'
# créer un nouveau fichier
nouveau = open("nouveau_fichier.txt", "x")
Vous avez créé un nouveau fichier dans votre répertoire de travail actuel.
Modifier un fichier avec Python
Pour modifier un fichier, on utilise la méthode write()
. Vous avez deux options pour le faire, ajouter ou écrire dans le fichier.
Ajouter, signifie ajouter du contenu à la fin du fichier. Le mode a
(append) ouvre le fichier et ajoute du contenu.
>>> with open("exemple.txt", "a") as fichier:
fichier.write("Une autre ligne.")
16
Nous avons ajouté 16 caractères.
Si vous utilisez la méthode avec close()
, vous devrez ajouter un \n
.
>>> fichier = open('exemple.txt', "a")
>>> fichier.write("\nbonjour.")
8
>>> fichier.close()
\n
est considéré comme un seul caractère. Consultez votre fichier exemple.txt
.
Par ailleurs, si vous voulez supprimer le contenu existant pour écrire du nouveau texte, Python met à votre disposition le mode w
.
>>> with open('exemple.txt', "w") as fichier:
fichier.write("Nous avons effacé l'ancien texte.")
29
Pour écrire plusieurs lignes, vous pouvez utiliser la méthode writelines()
en mode a
, la méthode prend une liste de chaînes de caractères. Chaque chaîne représente la ligne qui sera ajoutée au fichier.
>>> with open('exemple.txt', "a") as fichier:
fichier.writelines(["\nLigne 1", "\nLigne 2", "\nLigne 3"])
Ouvrir un fichier et effectuer plusieurs opérations
Pour lire un fichier et effectuer une autre opération dans le même programme, on ajoutera l’opérateur +
au mode.
fichier = open("exemples.txt", "w+") # lire et écrire
Vous pouvez vous référer au tableau ci-dessus pour les autres modes.
Supprimer des fichiers
Pour supprimer un fichier avec Python, vous utiliserez le module os
. La fonction. remove()
prend le chemin du fichier à supprimer comme argument.
>>> os.remove("exemple.txt")
Accédez à votre répertoire exemples, le fichier exemple.txt
n’est plus là.