Introduction
Dans ce laboratoire, vous apprendrez le processus fondamental de lecture et d'écriture dans des fichiers en Python. Les E/S de fichiers (Entrées/Sorties, ou File I/O) sont une compétence cruciale pour tout programmeur, car elles permettent à vos programmes de persister des données, de lire des configurations et d'interagir avec le système de fichiers.
Nous nous concentrerons sur l'utilisation de l'instruction with, qui est la manière moderne et recommandée de gérer les fichiers en Python. Elle garantit que les fichiers sont automatiquement fermés, même en cas d'erreurs, prévenant ainsi les fuites de ressources.
Tout au long de ce laboratoire, vous allez :
- Comprendre le processus de base des E/S de fichiers.
- Ouvrir et lire des fichiers en utilisant différentes méthodes (
read(),readlines(), et l'itération). - Écrire du nouveau contenu dans des fichiers et ajouter du contenu à des fichiers existants.
Toutes les opérations seront effectuées dans le LabEx WebIDE. Commençons.
Le Processus de Lecture et d'Écriture de Fichiers
Dans cette étape, vous apprendrez le processus de base des opérations d'E/S (Entrée/Sortie) de fichiers en Python et pourquoi l'instruction with est essentielle.
Pour lire ou écrire dans un fichier en Python, vous suivez généralement trois étapes :
- Ouvrir le fichier.
- Lire ou écrire dans le fichier.
- Fermer le fichier.
Gérer manuellement la fermeture d'un fichier peut être source d'erreurs. Si votre programme rencontre une erreur pendant que le fichier est ouvert, il pourrait ne pas se fermer correctement. Pour résoudre ce problème, Python fournit l'instruction with. Elle gère automatiquement la fermeture du fichier pour vous, même si des exceptions se produisent, garantissant que les ressources système sont gérées correctement.
Note : Si vous n'êtes pas familier avec l'utilisation de WebIDE (similaire à VS Code), veuillez vous familiariser avec cela lors de ce laboratoire.
La syntaxe de base est la suivante :
with open('filename.txt', 'mode') as file_variable:
## Perform operations on the file
open(): La fonction intégrée pour ouvrir un fichier.'filename.txt': Le chemin d'accès au fichier.'mode': Un caractère indiquant comment le fichier sera utilisé (par exemple,'r'pour la lecture,'w'pour l'écriture).file_variable: La variable que vous utiliserez pour interagir avec l'objet fichier.
Cette étape est purement conceptuelle. Dans les étapes suivantes, vous appliquerez ces connaissances pour effectuer des opérations de fichiers réelles.
Ouverture et Lecture des Fichiers
Dans cette étape, vous apprendrez comment ouvrir et lire des fichiers en utilisant la fonction open(). Nous couvrirons la lecture du fichier entier, sa lecture ligne par ligne dans une liste, et l'itération sur les lignes, ce qui est très efficace pour les fichiers volumineux.
Le script de configuration a déjà créé deux fichiers pour vous : hi.txt et sonnet29.txt.
Lecture d'un Fichier Entier avec read()
La méthode read() lit l'intégralité du contenu d'un fichier dans une seule chaîne de caractères (string).
- Dans l'explorateur de fichiers à gauche, ouvrez le fichier
read_file.py. - Ajoutez-y le code suivant. Ce script ouvre
hi.txt, lit son contenu et l'affiche dans la console.
## Read file using 'with' statement: automatically closes file when done
with open('/home/labex/project/hi.txt') as hello_file:
hello_content = hello_file.read() ## Read entire file content
print(hello_content)
- Pour exécuter le script, ouvrez un terminal et exécutez la commande suivante :
python3 read_file.py
Vous devriez voir le contenu de hi.txt s'afficher.
Hello World!
Lecture d'un Fichier dans une Liste de Lignes avec readlines()
La méthode readlines() lit toutes les lignes d'un fichier et les retourne sous forme de liste de chaînes de caractères. Chaque chaîne de caractères dans la liste représente une ligne et inclut le caractère de nouvelle ligne (\n) à la fin.
- Modifiez
read_file.pyavec le code suivant pour liresonnet29.txt.
## readlines() method: returns list of strings, one per line
with open('/home/labex/project/sonnet29.txt') as sonnet_file:
lines = sonnet_file.readlines() ## Returns list with each line as a string
print(lines)
- Exécutez à nouveau le script :
python3 read_file.py
Le résultat sera une liste de chaînes de caractères, où chaque chaîne est une ligne du fichier.
['When, in disgrace with fortune and men\'s eyes,\n', 'I all alone beweep my outcast state,\n', 'And trouble deaf heaven with my bootless cries,\n', 'And look upon myself and curse my fate,\n']
Itération à Travers un Fichier Ligne par Ligne
Pour les fichiers volumineux, lire l'intégralité du contenu en mémoire peut être inefficace. Une meilleure approche consiste à itérer directement sur l'objet fichier. Cela lit le fichier ligne par ligne sans charger le fichier entier en mémoire.
- Modifiez
read_file.pyune dernière fois avec le code suivant.
## Iterate through file line by line (memory efficient for large files)
with open('/home/labex/project/sonnet29.txt') as sonnet_file:
for line in sonnet_file: ## File object is iterable
print(line, end='') ## Print without extra newline
Note : Nous utilisons
end=''dans la fonctionprint()pour éviter d'ajouter une nouvelle ligne supplémentaire, car chaquelineprovenant du fichier se termine déjà par un saut de ligne.
- Exécutez le script :
python3 read_file.py
Ceci affichera le contenu du fichier, parfaitement formaté.
When, in disgrace with fortune and men's eyes,
I all alone beweep my outcast state,
And trouble deaf heaven with my bootless cries,
And look upon myself and curse my fate,
Écriture dans les Fichiers
Dans cette étape, vous allez explorer comment écrire des données dans des fichiers. Nous aborderons deux modes différents : le mode écriture ('w'), qui écrase tout contenu existant, et le mode ajout ('a'), qui ajoute de nouvelles données à la fin du fichier.
Écriture dans un Fichier avec le Mode 'w'
Lorsque vous ouvrez un fichier en mode écriture ('w'), un nouveau fichier est créé s'il n'existe pas. Si le fichier existe déjà, son contenu intégral est effacé avant que le nouveau contenu ne soit écrit.
- Dans l'explorateur de fichiers, ouvrez le fichier
write_file.py. - Ajoutez-y le code suivant. Ce script va créer un fichier nommé
bacon.txtet y écrire une seule ligne de texte. La méthodewrite()retourne le nombre de caractères écrits.
## Write to file: 'w' mode overwrites existing file
with open('/home/labex/project/bacon.txt', 'w') as bacon_file: ## 'w' = write mode
chars_written = bacon_file.write('Hello world!\n') ## Returns number of characters written
print(chars_written)
- Exécutez le script depuis le terminal :
python3 write_file.py
Le résultat affiche le nombre de caractères écrits dans le fichier.
13
Vous pouvez maintenant voir un nouveau fichier, bacon.txt, dans votre explorateur de fichiers.
Ajout à un Fichier avec le Mode 'a'
Le mode ajout ('a') est utilisé pour ajouter des données à la fin d'un fichier existant sans supprimer son contenu actuel. Si le fichier n'existe pas, il sera créé.
- Modifiez
write_file.pypour ajouter une autre ligne àbacon.txt.
## Append to file: 'a' mode appends to existing file
with open('/home/labex/project/bacon.txt', 'a') as bacon_file: ## 'a' = append mode
chars_written = bacon_file.write('Bacon is not a vegetable.')
print(chars_written)
- Exécutez à nouveau le script :
python3 write_file.py
Le résultat affiche le nombre de caractères de la nouvelle chaîne.
25
Vérification du Contenu Final
Pour confirmer que les opérations d'écriture et d'ajout ont fonctionné correctement, lisons le contenu de bacon.txt.
- Modifiez
write_file.pyune dernière fois pour lire et afficher le contenu debacon.txt.
with open('/home/labex/project/bacon.txt') as bacon_file:
content = bacon_file.read()
print(content)
- Exécutez le script :
python3 write_file.py
Le résultat devrait afficher le contenu combiné des opérations d'écriture et d'ajout.
Hello world!
Bacon is not a vegetable.
Résumé
Félicitations pour avoir terminé ce laboratoire sur la lecture et l'écriture de fichiers en Python !
Dans ce laboratoire, vous avez acquis les compétences essentielles pour les opérations d'entrée/sortie (I/O) de fichiers. Vous avez commencé par comprendre l'importance de l'instruction with pour une gestion des fichiers sûre et automatique.
Vous avez ensuite pratiqué plusieurs méthodes pour lire des fichiers :
read()pour obtenir le contenu entier sous forme d'une seule chaîne de caractères (string).readlines()pour obtenir une liste de toutes les lignes.- L'itération directe sur l'objet fichier pour une méthode efficace en mémoire permettant de traiter les fichiers volumineux ligne par ligne.
Enfin, vous avez exploré comment écrire dans des fichiers :
- Utilisation du mode écriture (
'w') pour créer un nouveau fichier ou écraser un fichier existant. - Utilisation du mode ajout (
'a') pour ajouter du contenu à la fin d'un fichier sans effacer ses données précédentes.
Ces opérations fondamentales sont des éléments de base pour des applications plus complexes nécessitant de stocker des données, de lire des configurations ou de traiter des fichiers texte.



