Lire et écrire dans des fichiers

Lire et éditer des fichiers est relativement simple en Python grâce à la fonction open()

Lire un fichier

On utilise la fonction open(). Celle-ci prend en argument l'adresse du fichier et un mode d'ouverture :

  • l'adresse du fichier est saisie en adresse relative. C'est à dire que l'on indique à Python où se trouve notre fichier par rapport au fichier .py en cours d'exécution. Ce genre d'adresse commence par "./"
  • Le mode de lecture est 'r' (pour read, simple lecture)

Une fois le fichier ouvert on peut lire l'ensemble des ligne d'un seul coup avec readlines().

La lecture étant fait on ferme le fichier avec close().

In [ ]:
fichier = open('./fichier.txt','r')

lignes = fichier.readlines()

for ligne in lignes : # on parcourt toutes les lignes lues une par une
    print(ligne)

fichier.close()

On peut aussi lire les lignes les unes après les autres :

In [ ]:
fichier = open('./fichier.txt','r')

ligne1 = fichier.readline();
ligne2 = fichier.readline();
ligne3 = fichier.readline();

print(ligne1+ligne3)

fichier.close()

Autre façon de faire, plus rapide et facile, spécifique à Python :

In [ ]:
fichier = open('./fichier.txt','r')

for line in fichier :
    print(line)

fichier.close()

On peut s'abstenir de fermer le fichier en utilisant la présentation suivante :

In [ ]:
with open("fichier.txt", "r") as fichier :
    for line in fichier :
        print(line)

Editer un fichier

On utilise aussi la fonction open() en changeant le second argument :

  • "w" afin d'écrire dans le fichier. Le contenu initial est écrasé
  • "a" (comme append/ajouter à la fin) afin d'écrire à la fin du fichier

Si le fichier indiqué par l'adresse n'existe pas, il est automatiquement créé.

La fonction write() ajoute alors le texte passé en argument dans le fichier.

In [ ]:
fichier = open('./fichierBis.txt','w')
fichier.write("Il n'y a qu'une ligne.\n") # le \n ajoute un retour à la ligne
fichier.close()

fichier = open('./fichierBis.txt', 'a')
fichier.write("En fait on en rajoute une !")
fichier. close()

with open("fichierBis.txt", "r") as fichier :
    for line in fichier :
        print(line)

Sélectionner les fichiers

Afin de traiter des fichiers en lots (toutes les images jpg par exemple), il est possible de sélectionner les fichiers.

Pour se faire on a besoin de la bibliothèque os que l'on importe au début du code.

In [ ]:
import os


# la ligne ci-dessous, un peu hermétique, récupère les adresses de fichiers txt du dossier courant
adresses_txt = [f for f in os.listdir('.') if f.endswith('txt')]

print(adresses_txt)

On peut alors lire tous les fichiers à la suite :

In [ ]:
for adresse in adresses_txt :
    with open("./" + adresse) as fichier :
        print("\n>> Contenu de" + adresse)
        for line in fichier :
            print(line)