Outils pour utilisateurs

Outils du site


dev:python:manipulation-de-fichiers

Ceci est une ancienne révision du document !


Manipulation des fichiers en python

Pour manipuler aisément les fichiers il faut avoir abordé 3 notions:

  • l'encodage
  • l'itération
  • le context manager

Écrire du texte dans un fichier

Pour lire et écrire du texte dans les fichiers, il faut spécifier correctement l'encodage. L'objet fichier est créé avec la fonction built-in open(), il se chargera d'encoder/décoder les caractères en fonction de l'encodage choisit:

file = open('/path/to/file.txt', 'w', encoding='utf8')                                           
for cpt in range(100): 
     file.write(f"ligne {cpt:4d}\n") 
 
# l'appel de la méthode close() est important                                                                                              
file.close()

Lire un fichier texte

En python les fichiers sont des itérateur: ils peuvent être directement intégrés à une boucle for:

file = open('/path/to/file.txt', 'r', encoding='utf8')
for line in file:
    # le fichier est parcouru ligne par ligne
    # transformer la str en liste
    line = line.split()
    # la liste étant mutable on peut effectuer nos traitements
    ...
 
file.close()

Le context manager

Le code précédent ne garanti pas que la ressource fichier soit bien libérée: exception à l’exécution ou oubli d'appel pas la méthode close(). Le protocole de context manager assurer l'ensemble des opérations de libération des ressources auprès du système d'exploitation lorsque un objet python n'est plus utilisé. L'objet fichier implémente ce protocole, pour l'utiliser il faut le placer après l'instruction with:

with open('/path/to/filename.txt') as file:
    # bloc d'instruction lié au context manager
    for line in file:
        print line

ecrire un flux binaire dans un fichier

with open('/path/to/filename.txt', 'bw') as file:

  # bloc d'instruction lié au context manager
  for line in range(100):
      file.write(b'\0xFF')

Références

dev/python/manipulation-de-fichiers.1605898709.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)