Lire ou écrire dans un fichier avec Python

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.

lire ou écrire dans un fichier avec Python

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.

ModesDescription
rlecture seule
r+lecture et écriture
wécriture uniquement
w+écriture et lecture
aajouter du contenu
a+l’ajout et la lecture
xcré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à.

Lire ou écrire dans un fichier avec Python

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Retour en haut