Comment gérer les fichiers en Python

Dans tout langage de programmation, la gestion des fichiers est un aspect important. Et Python prend également en charge le travail avec des fichiers dans différents modes, tels que la lecture et l’écriture dans des fichiers, etc.

À la fin de ce didacticiel, vous serez en mesure de :

  • ouvrir et lire des fichiers en Python,
  • lire les lignes d’un fichier texte,
  • écrire et ajouter aux fichiers, et
  • utiliser les gestionnaires de contexte pour travailler avec des fichiers en Python.

Comment lire un fichier en Python

Pour ouvrir un fichier en Python, vous pouvez utiliser la syntaxe générale : open(‘file_name’,’mode’).

  • Ici, file_name est le nom du fichier.

Remarque : Si le fichier que vous souhaitez ouvrir se trouve dans le répertoire de travail actuel, vous ne pouvez mentionner que le nom du fichier. S’il se trouve dans un autre dossier de votre environnement de travail, vous devez inclure le chemin d’accès au fichier.

  • Le paramètre mode spécifie le mode dans lequel vous souhaitez ouvrir le fichier.

Le mode par défaut d’ouverture d’un fichier est la lecture, indiquée par la lettre « r ». Cependant, il est recommandé de spécifier explicitement le mode.

Avant de commencer, examinons le fichier lib.txt, que nous utiliserons dans cet exemple.

📁 Téléchargez le fichier texte et le code utilisés dans ce tutoriel à partir de ce dépôt GitHub.

L’extrait de code ci-dessous montre comment ouvrir un fichier texte ‘lib.txt’ en Python à l’aide de la fonction open() et lire son contenu.

file = open('lib.txt','r')
contents = file.read()
print(contents)
file.close()


# Output
Hello, there!
Here are a few helpful Python libraries:
1) NumPy
2) pandas
3) matplotlib
4) seaborn
5) scikit-learn
6) BeautifulSoup
7) Scrapy
8) nltk
9) Bokeh
10) statsmodels

Dans l’exemple ci-dessus,

  • La fonction open() renvoie un objet file, et nous choisissons de l’appeler file.
  • Ensuite, nous appelons la méthode read() sur file.
  • La variable contents contient maintenant le contenu du fichier. Et nous l’imprimons.
  • Enfin, nous fermons le fichier.

Cependant, si vous oubliez de fermer le fichier, il y aura un possible gaspillage de ressources. Si vous travaillez avec un grand nombre de ces fichiers, l’utilisation de la mémoire peut être importante. C’est parce que vous avez ouvert plusieurs fichiers mais que vous n’en avez fermé aucun.

Maintenant, apprenons une meilleure façon d’ouvrir des fichiers en utilisant gestionnaires de contexte. L’extrait de code ci-dessous montre comment vous pouvez les utiliser.

with open('lib.txt','r') as f:
  contents = f.read()
  print(contents)

Lorsque vous utilisez des gestionnaires de contacts pour travailler avec des fichiers, vous n’avez pas besoin d’utiliser la méthode close(). Les fichiers sont automatiquement fermés une fois l’opération d’E/S terminée.

Comment lire les lignes d’un fichier en Python

Dans notre exemple de fichier texte, nous n’avions que quelques lignes. Ainsi, la lecture de tout le contenu du fichier à la fois n’était pas un problème.

Cependant, lorsque vous avez besoin de lire des fichiers volumineux, l’utilisation de la méthode read(), comme indiqué ci-dessus, peut ne pas être très efficace.

En fait, si le fichier texte est de très grande taille, vous risquez de manquer de mémoire rapidement. C’est pourquoi vous voudrez peut-être lire des lignes en lecture seule à partir d’un fichier texte, et vous apprendrez comment faire cela dans cette section.

Utilisation de la méthode readline() de Python pour lire des lignes à partir d’un fichier

La méthode readline() lit une ligne à la fois, à partir du fichier.

Exécutez l’extrait de code suivant.

with open('lib.txt','r') as f:
  line = f.readline()
  print(line)
  line = f.readline()
  print(line)


# Output
Hello, there!

Here are a few helpful Python libraries:

Vous pouvez voir qu’après le premier appel de la méthode readline(), la première ligne du fichier est imprimée. Et le deuxième appel à la méthode readline() renvoie la deuxième ligne du fichier.

En effet, après le premier appel de méthode, le pointeur de fichier se trouve au début de la deuxième ligne.

En Python, vous pouvez utiliser la méthode tell() pour obtenir l’emplacement actuel du pointeur de fichier. Et pour déplacer le pointeur de fichier vers un emplacement spécifique, vous pouvez utiliser la méthode seek().

Dans l’extrait de code ci-dessous, nous utilisons f.seek(0) après le premier appel de méthode. Cela déplace le pointeur de fichier au début du fichier texte. C’est pourquoi, les deux fois, la première ligne du fichier est imprimée.

with open('lib.txt','r') as f:
  line = f.readline()
  print(line)
  f.seek(0)
  line = f.readline()
  print(line)


# Output
Hello, there!

Hello, there!

Utilisation de la méthode readlines() de Python pour lire des lignes à partir d’un fichier

Il existe une autre méthode étroitement liée appelée readlines().

Lorsque vous exécutez l’extrait de code suivant, vous verrez que la méthode readlines() renvoie une liste de toutes les lignes du fichier.

with open('lib.txt','r') as f:
  lines = f.readlines()
  print(lines)


# Output
['Hello, there!n', 'Here are a few helpful Python libraries:n', 
'1) NumPyn', '2) pandasn', '3) matplotlibn', 
'4) seabornn', '5) scikit-learnn', '6) BeautifulSoupn', 
'7) Scrapyn', '8) nltkn', '9) Bokehn', '10) statsmodelsn', 'n']

Utilisation de la boucle for de Python pour lire des lignes à partir d’un fichier

Pour lire les lignes d’un fichier texte, vous pouvez également utiliser la boucle for.

Une fois que vous avez un objet fichier, vous pouvez utiliser la boucle for pour parcourir le contenu du fichier, une ligne à la fois, et les imprimer, comme indiqué ci-dessous. Remarquez que nous n’accédons qu’à une seule ligne à la fois et que nous ne lisons pas tout le contenu du fichier.

with open('lib.txt','r') as f:
  for line in f:
    print(line, end='')

Remarque : lors de l’utilisation de la fonction print() de Python, le séparateur par défaut est un caractère de retour à la ligne : « n ». Mais dans le fichier d’origine, nous n’avons pas ces nouvelles lignes. Définissez donc l’argument séparateur sur une chaîne vide : end = ” afin d’imprimer le contenu du fichier tel qu’il est.

Comment lire des morceaux de contenu à partir d’un fichier en Python

En Python, vous pouvez également choisir de lire le contenu du fichier en termes de petits morceaux.

Lisez le code ci-dessous :

  • Ici, nous définissons chunk_size sur 50. Cela signifie que les 50 premiers caractères du fichier seront lus et que nous les imprimerons également.
  • Maintenant, appelez la méthode tell() sur l’objet fichier f. Vous pouvez voir que le pointeur de fichier est maintenant à la position 51, ce qui est comme prévu.
chunk_size = 50
with open('lib.txt','r') as f:
  chunk = f.read(chunk_size)
  print(chunk)
  current = f.tell()
  print(f"Current position of file pointer: {current}")

# Output
Hello, there!
Here are a few helpful Python librar
Current position of file pointer: 51

Vous pouvez également utiliser cette technique pour lire le fichier entier en termes de petits morceaux.

L’extrait de code suivant montre comment vous pouvez le faire.

chunk_size = 50
with open('lib.txt','r') as f:
  chunk = f.read(chunk_size)
  print(chunk,end='')

  while(len(chunk)>0):
    chunk = f.read(chunk_size)
    print(chunk,end='')

# Output
Hello, there!
Here are a few helpful Python libraries:
1) NumPy
2) pandas
3) matplotlib
4) seaborn
5) scikit-learn
6) BeautifulSoup
7) Scrapy
8) nltk
9) Bokeh
10) statsmodels

Ici, nous utilisons une boucle while pour lire le contenu du fichier. Nous lisons le contenu du fichier en bloc de taille 50 jusqu’à ce que nous atteignions la fin du fichier. ✅

Comment écrire dans un fichier en Python

Pour écrire dans un fichier texte en Python, vous devez l’ouvrir en mode écriture en spécifiant ‘w’.

L’extrait de code ci-dessous montre comment procéder.

with open('new_file.txt','w') as f:
  f.write('Hello, Python!')

Vous verrez que ‘new_file.txt’ a été créé dans votre répertoire de travail.

Maintenant, exécutez à nouveau la cellule de code ci-dessus.

Dans votre terminal exécutez la commande suivante :

cat new_file.txt

# Output: Hello, Python!

Idéalement, nous avons écrit deux fois dans le fichier. Alors bonjour, Python ! aurait dû être imprimé deux fois, oui ?

Mais vous verrez qu’il n’a été imprimé qu’une seule fois. Eh bien, c’est parce que lorsque vous ouvrez un fichier en mode écriture (w), vous écrasez essentiellement le contenu du fichier avec un nouveau contenu.

Si vous souhaitez ajouter à la fin du fichier sans écraser le contenu existant, vous devez ouvrir le fichier en mode ajout. Et vous verrez comment procéder dans la section suivante.

Comment ajouter au fichier en Python

Si vous souhaitez ajouter du contenu à un fichier sans l’écraser, ouvrez-le en mode ajout.

Pour ce faire, utilisez `’a’—a pour ajouter—et spécifiez explicitement le mode.

Ensuite, exécutez la cellule de code suivante deux fois.

with open('new_file.txt','a') as f:
  f.write('Hello, Python!')

Remarquez comment le texte est maintenant imprimé deux fois, comme nous l’avons ajouté au fichier.

cat new_file.txt

# Output: Hello, Python!Hello, Python!

Conclusion

Résumons rapidement ce que nous avons vu dans ce tutoriel.

  • Vous avez appris les opérations courantes d’E/S sur les fichiers, telles que la lecture, l’écriture et l’ajout à un fichier.
  • De plus, vous avez également appris à utiliser la méthode seek () pour déplacer le pointeur de fichier vers une position spécifique, et
  • comment utiliser la méthode tell() pour récupérer la position actuelle du pointeur de fichier.

J’espère que vous avez trouvé ce tutoriel utile. Maintenant que vous avez appris à travailler avec des fichiers texte en Python, apprenez à travailler avec des fichiers JSON en Python.

Lié:

Vérifier la longueur d’une liste en Python en 3 étapes.