Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Maîtriser la manipulation de fichiers en Python
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

Maîtriser la manipulation de fichiers en Python

L'Équipe Alphorm Par L'Équipe Alphorm 18 janvier 2025
Partager
27e lecture en min
Partager
Cet article fait partie du guide Tuto Python Gratuit : Apprenez les Bases et Réalisez des Projets Pratiques, partie 18 sur 23.

Manipuler correctement les fichiers en Python peut être un défi, surtout lorsqu’il s’agit de gérer les ouvertures, fermetures et lectures sans erreur.

Des fichiers mal ouverts ou non fermés peuvent entraîner des fuites de mémoire, des erreurs d’exécution et des pertes de données, compliquant le bon fonctionnement des applications.

Cet article vous guide à travers les bonnes pratiques de gestion des fichiers en Python, en utilisant des méthodes comme open() et l’instruction with pour garantir une manipulation sécurisée et optimisée des fichiers.

Table de matière
Assimiler les différents modes d'ouverture de fichiers en PythonManipulation des fichiers en Python avec open() et withLire le contenu d’un fichier texte en PythonGérer les erreurs lors de la manipulation de fichiers en PythonConclusion

Assimiler les différents modes d'ouverture de fichiers en Python

En Python, la persistance des données est directement liée à la manipulation des fichiers. Il est donc essentiel de connaître les différents modes d’ouverture de fichiers disponibles, tels qu’expliqués dans le tableau ci-dessous :

Mode
Description
r
Lecture seule. Le fichier doit exister.
w
Écriture. Crée un nouveau fichier ou écrase le fichier existant.
a
Ajout. Ajoute les données à la fin du fichier existant.
r+
Lecture et écriture. Le fichier doit exister.
w+
Lecture et écriture. Crée un nouveau fichier ou écrase le fichier existant.
a+
Lecture et ajout. Ajoute les données à la fin du fichier existant.
rb
Lecture en mode binaire. Le fichier doit exister.
wb
Écriture en mode binaire. Crée un nouveau fichier ou écrase le fichier existant.
ab
Ajout en mode binaire. Ajoute les données à la fin du fichier existant.
rb+
Lecture et écriture en mode binaire. Le fichier doit exister.
wb+
Lecture et écriture en mode binaire. Crée un nouveau fichier ou écrase le fichier existant.
ab+
Lecture et ajout en mode binaire. Ajoute les données à la fin du fichier existant.
Il est désormais possible de combiner le mode b (binaire) avec n’importe quel autre mode pour manipuler un fichier en binaire.

Manipulation des fichiers en Python avec open() et with

La manipulation des fichiers est une compétence essentielle en Python, utilisée pour lire, écrire et gérer les données. Pour travailler avec des fichiers, il est nécessaire de comprendre comment les ouvrir correctement en utilisant la fonction open(), qui permet d’ouvrir un fichier en spécifiant son chemin et le mode d’accès souhaité (lecture, écriture, ajout, etc.).

La fonction open() en Python

La fonction open() est le point de départ pour manipuler les fichiers en Python. Sa syntaxe de base est la suivante :

Syntaxe pour ouvrir un fichier en Python avec open()

Ouvrir des fichiers sans with en Python

Lorsqu’on utilise open() sans l’instruction with, il est nécessaire de gérer explicitement la fermeture du fichier pour libérer les ressources système. Voici comment cela fonctionne :

Supposons que nous avons créé un fichier texte nommé fichier.txt dans lequel nous avons écrit la phrase : « bonjour tout le monde », comme illustré dans la figure suivante.

Contenu textuel du fichier fichier.txt utilisé en exemple

Pour lire le contenu de ce fichier, nous allons utiliser la fonction open. Cette fois-ci, nous effectuerons la fermeture manuelle du fichier en appelant fichier.close(), comme montré dans le code ci-dessous :

				
					fichier = open('fichier.txt', 'r')
contenu = fichier.read()
print(contenu)
fichier.close()
				
			

En exécutant ce programme, le contenu de notre fichier s’affiche correctement.

Code Python pour afficher le contenu d’un fichier texte

Cependant, cette méthode nécessite une gestion prudente pour éviter les fuites de ressources, en particulier si une exception se produit avant la fermeture du fichier.

Utiliser with pour une gestion automatique des fichiers

L’instruction with est généralement préférée car elle gère automatiquement la fermeture du fichier, même en cas d’erreur. En utilisant with, vous créez un contexte de gestion des ressources qui assure la fermeture du fichier une fois le bloc de code terminé :

				
					with open('fichier.txt', 'mode') as fichier:
# Opérations sur le fichier
contenu = fichier.read()
				
			

L’utilisation de with simplifie la gestion des fichiers et réduit le risque d’erreurs liées à l’omission de la fermeture du fichier. Voici des exemples pour ouvrir un fichier en utilisant trois modes différents :

Mode lecture (‘r’) : Pour lire le contenu d’un fichier existant.

Code Python lisant et affichant chaque ligne d’un fichier texte

Dans cet exemple, le fichier exemple.txt est ouvert en mode lecture. Son contenu est lu, puis le fichier est automatiquement fermé après l’exécution du bloc with.

Mode écriture (‘w’) : Pour créer un nouveau fichier ou écraser un fichier existant.

				
					with open('exemple.txt', 'w') as fichier:
fichier.write('Ceci est un nouveau contenu.')
				
			

Ici, le fichier exemple.txt est ouvert en mode écriture. S’il n’existe pas, il est créé. S’il existe, son contenu est écrasé. Le fichier est ensuite automatiquement fermé.

Voici ce qui est créé après l’exécution du programme, ainsi que le contenu du fichier :

Résultat du programme lisant fichier.txt en Python

Mode ajout (‘a’) : Pour ajouter des données à la fin d’un fichier existant.

				
					with open('exemple.txt', 'a') as fichier:
fichier.write('\nAjout d\'une nouvelle ligne.')
				
			

Ce mode ouvre le fichier exemple.txt en mode ajout, permettant d’ajouter du texte à la fin du fichier sans écraser son contenu existant. Le fichier est également fermé automatiquement après l’ajout.

Voici le nouveau contenu de fichier exemple.txt :

Résultat de l’ajout de données dans fichier.txt en Python
il est fortement recommandé d’utiliser with pour une gestion plus sûre et efficace des ressources. Cette méthode assure que les fichiers sont toujours correctement fermés, ce qui minimise les risques de fuites de ressources et d’autres erreurs.

Pour écrire dans un fichier texte en Python, vous devez suivre les méthodes suivantes :

Ouvrir le fichier : Utilisez la fonction open() pour ouvrir le fichier en spécifiant le mode d’ouverture, tel que ‘w’ pour l’écriture. Si le fichier n’existe pas, il sera créé, et s’il existe déjà, son contenu sera remplacé. Vous pouvez également utiliser l’instruction with pour ouvrir le fichier, ce qui garantit sa fermeture automatique après l’opération.

				
					with open("mon_fichier.txt", "w") as fichier:
				
			

Écrire dans le fichier :

  • Utilisez la méthode write() pour écrire directement du texte dans le fichier. Cette méthode prend une chaîne de caractères comme argument.
    • Vous pouvez également utiliser la fonction print() avec l’argument file pour écrire dans le fichier. Cette méthode est pratique si vous souhaitez ajouter des lignes de texte formatées, de la même manière que vous les afficheriez dans la console.

Fermer le fichier : Si vous n’utilisez pas l’instruction with, vous devez fermer le fichier manuellement avec close(). Cependant, si vous utilisez with, le fichier est fermé automatiquement à la fin du bloc.

Voici un code qui récapitule toutes les étapes à suivre pour écrire dans un fichier .txt à partir d’un script Python :

				
					# Utiliser 'with' pour ouvrir le fichier en mode écriture
with open("mon_fichier.txt", "w") as fichier:
# Écrire du texte dans le fichier avec la méthode write()
fichier.write("Ceci est un exemple de texte écrit dans un fichier.\n")
# Écrire du texte dans le fichier avec la fonction print()
print("Ceci est un autre exemple de texte écrit avec print().", file=fichier)
				
			

Voici le contenu de mon_fichier.txt après l’exécution de ce code Python :

Nouveau contenu du fichier texte après modifications
La méthode print() avec l’option file est particulièrement utile lorsque vous souhaitez écrire plusieurs lignes de texte avec des sauts de ligne automatiques.

Formation Python : Se former à la persistance des données

Exploitez la persistance des données en python

Découvrir cette formation
image d'un joueur de cybersport avec un ordinateur dans un environnement technologique

Lire le contenu d’un fichier texte en Python

Pour comprendre comment lire le contenu d’un fichier texte en Python, il est essentiel de commencer par créer ce fichier et le remplir avec des données. Cela vous permettra d’avoir un exemple pratique sur lequel travailler. Voici comment procéder :

Commençons par créer un fichier texte nommé file.txt et y écrire quelques lignes de contenu. Nous utiliserons la méthode open() avec le mode ‘w’ pour créer et écrire dans le fichier. Le code ci-dessous montre comment écrire une série de lignes numérotées dans ce fichier :

				
					with open("file.txt", "w") as f:
# Écrire 20 lignes numérotées dans le fichier
for i in range(20):
f.write("Le numéro : " + str(i + 1) + "\n")
				
			

Ce code crée un fichier nommé file.txt et y écrit 20 lignes, chacune contenant un numéro allant de 1 à 20. Voici le contenu de mon fichier après l’exécution du code :

Code Python affichant ligne par ligne un fichier texte

Maintenant que le fichier est créé et rempli, nous allons lire son contenu. La lecture d’un fichier texte en Python peut se faire de différentes manières, en fonction de vos besoins. Vous pouvez lire l’intégralité du fichier d’un coup, lire ligne par ligne, ou lire un nombre spécifique de caractères comme il est bien expliquer dans le tableau suivant :

Méthode
Description
read()
Lit l’intégralité du fichier d’un coup et retourne le contenu sous forme de chaîne de caractères.
readline()
Lit une seule ligne du fichier à la fois. Utile pour parcourir le fichier ligne par ligne.
readlines()
Lit toutes les lignes du fichier et retourne une liste de chaînes de caractères, où chaque élément représente une ligne.
read(n)
Lit un nombre spécifique de caractères du fichier. Si n n’est pas spécifié, lit le reste du fichier à partir de la position actuelle.

Lire une ligne avec readline() en Python

La fonction readline() lit une seule ligne à la fois d’un fichier ouvert, ce qui est pratique pour traiter les fichiers ligne par ligne sans charger l’ensemble du fichier en mémoire. Par exemple, si vous avez un fichier texte contenant plusieurs lignes et que vous souhaitez afficher chaque ligne séparément, vous pouvez utiliser readline() dans une boucle while pour lire chaque ligne successivement. Voici un exemple :

				
					# Ouvrir un fichier en mode lecture
with open('file.txt', 'r') as fichier:
# Lire chaque ligne une par une
ligne = fichier.readline()
while ligne:
print(ligne.strip())  # Afficher la ligne en supprimant les espaces superflus
ligne = fichier.readline()  # Lire la ligne suivante
				
			

Ainsi voici ce qui est affiché en exécutant ce code :

Code Python affichant ligne par ligne un fichier texte

Dans cet exemple, readline() lit une ligne du fichier à chaque appel et la boucle continue jusqu’à ce que readline() renvoie une chaîne vide, indiquant la fin du fichier. Cette méthode est particulièrement efficace pour traiter de grands fichiers ligne par ligne sans surcharger la mémoire, contrairement à readlines(), qui chargerait toutes les lignes en mémoire simultanément.

Avantages de readline() pour la lecture de fichiers

l’utilisation de la fonction readline() présente de nombreux avantages, tels que :

Avantages d’utilisation de la fonction readline()
  • Gestion efficace de la mémoire : En lisant le fichier ligne par ligne, readline() évite de charger l’ensemble du fichier en mémoire, ce qui est particulièrement bénéfique lorsque vous travaillez avec des fichiers volumineux. Cela permet de gérer des fichiers de taille variable sans risquer de surcharger la mémoire disponible.
  • Traitement séquentiel des données : Grâce à readline(), vous pouvez traiter chaque ligne individuellement au fur et à mesure qu’elle est lue, ce qui est idéal pour les opérations nécessitant une analyse ligne par ligne. Cela facilite la gestion de données structurées ou de logs où chaque ligne contient des informations distinctes.
  • Flexibilité dans la gestion des fichiers : La capacité de lire les fichiers ligne par ligne permet de gérer des fichiers de tailles variables avec une plus grande flexibilité. Vous pouvez adapter votre traitement en fonction du contenu de chaque ligne, ce qui offre un contrôle plus précis sur le traitement des données.
  • Simplicité d’utilisation : readline() est facile à utiliser dans une boucle pour itérer à travers chaque ligne du fichier. Cette simplicité facilite l’implémentation de processus de lecture et de traitement de fichiers sans nécessiter de structures complexes.

Ces avantages font de la fonction readline() un outil précieux pour la gestion de fichiers texte volumineux et pour les opérations qui nécessitent une lecture progressive et contrôlée des données.

Lire plusieurs lignes avec readlines() en Python

La fonction readlines() permet de lire toutes les lignes d’un fichier ouvert et de les retourner sous forme de liste. Chaque élément de cette liste correspond à une ligne du fichier, y compris le caractère de fin de ligne (\n). Cette fonction est particulièrement utile lorsque vous souhaitez charger l’intégralité du contenu d’un fichier en mémoire et traiter ses lignes individuellement par la suite.

Lors de l’utilisation de readlines(), chaque ligne est lue et stockée comme un élément distinct dans une liste Python, ce qui permet un accès rapide et facile à n’importe quelle ligne en utilisant les index de la liste. Toutefois, il est important de noter que readlines() peut consommer beaucoup de mémoire si le fichier est très volumineux, car toutes les lignes sont chargées simultanément en mémoire.

				
					with open("file.txt", "r") as f:
lignes = f.readlines()  # Lire toutes les lignes du fichier dans une liste
for ligne in lignes:
print(ligne)  # Afficher chaque ligne
				
			

Ainsi voici ce qui est afficher en exécutant ce code :

Code Python lisant tout le contenu d’un fichier

Dans cet exemple, readlines() lit toutes les lignes du fichier example.txt et les stocke dans la liste lignes. Ensuite, une boucle for est utilisée pour parcourir chaque élément de la liste et afficher son contenu.

L’utilisation de readlines() est pratique lorsque vous avez besoin de traiter toutes les lignes d’un fichier en même temps, comme pour des opérations de filtrage, de tri ou d’analyse qui nécessitent d’accéder à l’ensemble du contenu du fichier.types de traitements de fichiers en Python.

Python

Maîtrisez Python et transformez vos idées en projets concrets !

Découvrir cette formation
Guide complet Python pour développeurs et informaticiens 2024

Avantages de la fonction readlines() en Python

l’utilisation de la fonction readlines() présente de nombreux avantages, tels que :

Avantages de la fonction read() pour lire un fichier complet
  • Accès rapide aux lignes : En utilisant readlines(), toutes les lignes du fichier sont chargées en mémoire sous forme de liste. Cela permet un accès immédiat et rapide à n’importe quelle ligne en utilisant les index de la liste, ce qui est pratique lorsque vous avez besoin de lire ou de manipuler des lignes spécifiques du fichier plusieurs fois.
  • Simplicité de traitement : La fonction retourne les lignes du fichier sous forme de liste, ce qui simplifie le traitement des données. Vous pouvez facilement itérer sur les lignes, appliquer des transformations, ou effectuer des analyses sur l’ensemble du contenu du fichier sans avoir à gérer des lectures répétées.
  • Manipulation facile des données : Une fois les lignes chargées dans une liste, vous pouvez utiliser toutes les fonctionnalités de manipulation des listes en Python, comme les tranches (slicing), les méthodes de recherche, ou les opérations de filtrage, pour traiter les données du fichier.
  • Opérations en mémoire : Lorsque la taille du fichier est gérable, charger toutes les lignes en mémoire peut simplifier le traitement, car vous pouvez effectuer des opérations comme la recherche, le tri, ou les modifications sur l’ensemble des données en une seule fois, sans avoir à réouvrir le fichier.
  • Pratique pour les petits fichiers : Pour les fichiers de taille modeste, readlines() offre une manière simple et efficace de lire toutes les lignes en une seule opération, facilitant ainsi le traitement et l’analyse sans complexité additionnelle.

Lire tout le contenu avec read() en Python

La fonction read() en Python est utilisée pour lire le contenu entier d’un fichier. Lorsque vous ouvrez un fichier en mode lecture (‘r’), vous pouvez utiliser read() pour extraire tout le texte contenu dans ce fichier sous forme de chaîne de caractères. Cette méthode est particulièrement utile lorsque vous avez besoin de traiter ou d’afficher le contenu complet d’un fichier d’un seul coup.

				
					with open("file.txt", "r") as f:
contenu = f.read()  # Lire tout le contenu du fichier
print(contenu)  # Afficher le contenu du fichier
				
			

Ainsi voici ce qui est afficher en exécutant ce code :

Exemple complet d'exécution d'un script Python manipulant un fichier

Dans cet exemple :

  • Ouverture du fichier: Le fichier file.txt est ouvert en mode lecture (‘r’) à l’aide de la fonction open().
  • Lecture du contenu: La méthode read() est appelée sur l’objet fichier f. Elle lit tout le contenu du fichier et le stocke dans la variable contenu.
  • Affichage du contenu: La fonction print(contenu) est utilisée pour afficher le contenu du fichier sur la console.

Avantages de la fonction read()

Avantages d’utilisation de readline() dans la lecture de fichiers
  • Lecture complète du fichier : La fonction read() permet de lire l’intégralité du contenu d’un fichier en une seule opération. Cela est particulièrement utile lorsque vous avez besoin de traiter ou d’afficher le texte complet d’un fichier sans vous soucier de la gestion ligne par ligne.
  • Simplicité d’utilisation : En utilisant read(), vous obtenez tout le contenu du fichier sous forme de chaîne de caractères, ce qui simplifie les opérations de traitement ultérieures, telles que la recherche de texte, la manipulation de contenu ou l’affichage.
  • Facilité d’affichage : Grâce à read(), vous pouvez facilement afficher le contenu complet d’un fichier en utilisant simplement une fonction d’impression. Cela rend l’affichage ou la vérification rapide du contenu du fichier très pratique.

Ces avantages font de la fonction read() un choix approprié pour les opérations nécessitant la lecture complète du contenu d’un fichier, surtout lorsque la taille du fichier est adéquate pour être chargée entièrement en mémoire.

Gérer les erreurs lors de la manipulation de fichiers en Python

Lors de la manipulation de fichiers en Python, il est important de gérer correctement les erreurs pour éviter que votre programme ne plante en cas de problème, tel que l’absence du fichier ou des permissions insuffisantes. Pour illustrer cela, commençons par un exemple simple où nous créons un fichier texte nommé fichier_erreur.txt, l’ouvrons en mode lecture, lisons son contenu, et affichons un message de fin de programme. Ce code fonctionne sans problème si le fichier existe déja.

				
					with open("fichier_erreur.txt", "w") as fichier:
fichier.write("Ceci est un fichier pour tester la gestion des erreurs.")
with open("fichier_erreur.txt", "r") as fichier:
contenu = fichier.read()  # Lire le contenu du fichier
print(contenu)  # Afficher le contenu du fichier
				
			

En exécutant ce code, vous verrez que tout se passe bien si le fichier existe, et le message « Fin du programme » s’affichera à la fin comme il est afficher dans la figure suivante :

Exemple complet d'exécution d'un script Python manipulant un fichier

Maintenant si vous essayez d’ouvrir un fichier qui n’existe pas, Python lèvera une exception FileNotFoundError comme il est montré dans la figure suivante :

Exemple d'erreur FileNotFoundError en Python

Pour éviter que le programme ne plante dans ce cas, vous pouvez utiliser la gestion des exceptions avec les blocs try et except. Voici comment vous pouvez gérer cette situation :

				
					try:
# Essayer d'ouvrir un fichier qui n'existe pas
with open("fichier_inexistant.txt", "r") as fichier:
contenu = fichier.read()
print(contenu)
except FileNotFoundError:
# Gérer l'erreur si le fichier n'est pas trouvé
print("Erreur : Le fichier 'fichier_inexistant.txt' n'existe pas.")
finally:
print("Fin du programme.")
				
			

Dans ce programme :

  • Bloc try : Contient le code qui tente d’ouvrir et de lire le fichier fichier_inexistant.txt.
  • Bloc except FileNotFoundError : Est exécuté si une FileNotFoundError est levée, indiquant que le fichier n’a pas été trouvé.
  • Bloc finally : S’exécute toujours, que l’erreur se soit produite ou non, et affiche « Fin du programme ».

En utilisant cette structure de gestion des erreurs, vous assurez que votre programme peut gérer les situations imprévues de manière élégante, sans se terminer brusquement en cas de problème. Cela améliore la robustesse et la fiabilité de votre code.

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui. Découvrez des cours variés pour tous les niveaux !

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

Conclusion

La manipulation des fichiers en Python est une compétence essentielle pour gérer et traiter des données de manière efficace. Grâce aux fonctions comme open(), read(), et readline(), vous pouvez lire, écrire et manipuler des fichiers avec flexibilité. En appliquant les bonnes pratiques, vous évitez les erreurs courantes et optimisez vos programmes.

Cette maîtrise vous permet de mieux contrôler les flux de données dans vos applications. La manipulation fichiers Python est donc incontournable pour tout développeur souhaitant travailler avec des fichiers.

Cet article fait partie du guide Tuto Python Gratuit : Apprenez les Bases et Réalisez des Projets Pratiques, partie 18 sur 23.
< Réaliser un exercice pratique Python : carnet d’adressesMaîtriser SQL avec Python >

ÉTIQUETÉ : Python
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Maîtriser la manipulation de fichiers en Python

© Alphorm - Tous droits réservés