Lire et éditer des fichiers est relativement simple en Python grâce à la fonction open()
On utilise la fonction open()
. Celle-ci prend en argument l'adresse du fichier et un mode d'ouverture :
'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()
.
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 :
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 :
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 :
with open("fichier.txt", "r") as fichier :
for line in fichier :
print(line)
On utilise aussi la fonction open()
en changeant le second argument :
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.
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)
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.
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 :
for adresse in adresses_txt :
with open("./" + adresse) as fichier :
print("\n>> Contenu de" + adresse)
for line in fichier :
print(line)