Vous êtes sur la page 1sur 22

Les fichiers

 Pour garder des résultats donnés par un programme, pour coder des documents
importants, il est indispensable de savoir manipuler des fichiers,

 On présente ici comment lire et écrire dans des fichiers en Python,

 Une fois le principe compris, l’utilisation est extrêmement simple :

 c’est un point fort de Python!


Plan
• 1. Introduction
• 2. Lecture des fichiers
• 3. Extraction des données dans une ligne
• 4. Écrire des données dans un fichier
Les fichiers

3
Noms de fichiers - Répertoire courant
• >>> from os import chdir
• >>> chdir("/home/jules/exercices")
• La première commande importe la fonction chdir() du module os.

• La seconde commande provoque le changement de répertoire (« chdir » «


change directory »)

Notes :
• Choisissez de préférence des noms de fichiers courts. évitez dans toute la
mesure du possible les caractères accentués, les espaces et les signes
typographiques spéciaux.

4
Les deux formes d'importation

• Pour utiliser les fonctions d'un module, il suffit de les importer.


• Mais cela peut se faire de deux manières différentes, comme ci-dessous.
• Voici un exemple de la première méthode :
• >>>import os
• La fonction: getcwd():??

>>rep_cour=
La première ligne de cet exemple importe l'intégralité du module os, lequel
contient de nombreuses fonctions intéressantes pour l'accès au système
d'exploitation.
• La seconde ligne utilise la fonction getcwd() du module os qui renvoie le
nom du répertoire courant (getcwd = get current working directory).

5
Manipulation des fichiers
 Le principe est le suivant :
1. On ouvre un fichier.
2. On lit les lignes successivement.
3. On ferme le fichier.
 En pratique :
 L’ouverture du fichier consiste à associer (via la fonction open) un objet de type file à
un fichier existant.
 Cet objet pointe au début du fichier et auquel on peut demander de lire des lignes et d’en
donner le résultat.
 Le principe n’est pas d’aller voir à un endroit arbitraire, contrairement à ce que l’on
ferait dans un tableau.
 open(chemin, mode) est disponible sans avoir besoin de rien importer. Elle prend en
paramètre :
- le chemin (absolu ou relatif) menant au fichier à ouvrir ,
- le mode d'ouverture.
Manipulation du fichier

7
Mode d’ouverture
Le mode est donné sous la forme d'une chaîne de caractères:
 'r' : ouverture en lecture ( Read).
 'w' : ouverture en écriture (Write): Le contenu du fichier est écrasé. Si le fichier n'existe pas, il est créé.
 'a' : ouverture en écriture en mode ajout (Append).
On écrit à la fin du fichier sans écraser l'ancien contenu du fichier. Si le fichier n'existe pas, il est créé.
 ‘b’: pour ouvrir le fichier en mode binaire.
2. >>> f
<_io.TextIOWrapper name='notes.txt' mode='r‘ encoding='cp1252'>
3. >>> type(f)
<class '_io.TextIOWrapper'>
4. >>> f.close()

Méthode 1
f = open('workfile', ‘r')
[instructions]
f.close()//
Méthode 2

with open(chemin_complet) as f: #
[instructions] # Cf. ci-dessous lecture des lignes du fichier
#
>>> # We can check that the file has been automatically closed.
>>> f.closed
Lire l'intégralité du fichier:
Méthode .read()
 Pour ce faire, on utilise la méthode
la méthode .read() lit tout le contenu d'un fichier et renvoie une chaîne de
caractères unique.
read de la classe _io.TextIOWrapper. Elle renvoie l'intégralité dufichier :

>>> with open(« fich.txt", "r") as f:


... f.read()
'girafe\ntigre\nsinge\nsouris\n'

 f.read(taille). Si la fin du fichier est atteinte, f.read() renvoie une chaîne vide ('').

>>> f.read()
‘This is the entire file.\n'
>>> f.read()
‘‘
Lire l'intégralité du fichier:
1. >>> f = open('notes.txt','r')
2. >>> contenu = f.read()
3. >>> print(contenu)
Nom Prenom Classe Groupe TEST DS
BAHIJ CHAHER T3 A 19.00 15.50
BALLOUM EYA M3 A 10.50 16.00
MOHAMED HACHEM T4 B 14.00 16.00
4. >>> f.close()
Lecture séquentielle d'un fichier
Pour ouvrir le fichier, « en lecture », de manière à pouvoir y relire les
informations enregistrées dans l'étape précédente :

>>> ofi = open('Monfichier', 'r')


>>> t = ofi.read()
>>> print t
Bonjour, fichier!Quel beau temps, aujourd’hui!
>>> ofi.close()

• La méthode read() lit les données présentes dans le fichier et les transfère
dans une variable de type « chaîne » (string) .

• Si on utilise cette méthode sans argument, la totalité du fichier est 13

transférée.
Lecture séquentielle d'un fichier
La méthode read() peut également être utilisée avec un argument. Celui-ci indiquera
combien de caractères doivent être lus, à partir de la position déjà atteinte dans le
fichier :
>>> ofi = open('Monfichier', 'r')
>>> t = ofi.read(7)
>>> print t
....
>>> t = ofi.read(15)
>>> print t
….

14
La lecture des lignes
f.readline() lit une seule ligne du fichier ;
>>> f.readline()
'This is the first line of the file.\n'
>>> f.readline()
'Second line of the file\n'
>>> f.readline()
'‘
Pour lire ligne à ligne, vous pouvez aussi boucler sur l'objet fichier. C'est plus efficace en termes de
gestion mémoire, plus rapide et donne un code plus simple :
>>>>>> for line in f:
…print(line, end='')
This is the first line of the file.
Second line of the file
La lecture des lignes
La lecture des lignes peut se faire:
 soit pas à pas via la méthode readline, qui lit la ligne courante et passe à
la suivante,
 soit globalement via la méthode readlines, qui crée l’itérateur de toutes
les lignes et permet ainsi de traiter ces dernières dans une boucle.
 Chaque ligne est en fait une chaîne de caractères (string).
 On ferme le fichier via la méthode close :
 il est conseillé d’écrire cette instruction aussitôt après avoir écrit
l’instruction open.
 Néanmoins, c’est une bonne habitude à prendre car on libère ainsi des
ressources dont on n’a plus l’utilité.
Exemple:
fonction NbrLigne qui a pour paramètre le nom d'un fichier (texte) et qui renvoie
le nombre de lignes de ce fichier.

17
La lecture des lignes
En pratique, on veut souvent séparer des informations dans les lignes
lues.
 Typiquement, une ligne prend la forme:
 NOM,PRENOM,Classe,DS et on veut en extraire différentes données, de
différentes natures.
 La méthode split fait une partie de ce travail :
 il suffit de lui donner comme paramètre le caractère selon lequel on veut
couper la chaîne.
 Une liste de chaînes est rendue :
1. >>> 'NOM,PRENOM,Classe,DS'.split(',')
2. ['NOM', 'PRENOM', 'Classe', 'DS']
Lecture de toutes les lignes du fichier en une seule fois : méthode readlines() (possible avec les
fichiers de petite taille)
fic = open('U:\\Documents\\...\\fic0.txt','r')
liste = fic.readlines() # Lecture de toutes les lignes et stockage dans une liste
fic.close()
print(liste) # Le résultat est perfectible…
for l in liste: # Parcours de la liste pour traitement
print(l.strip()) # Suppression des caractères spéciaux (\n = retour ligne)

Lecture d’un fichier ligne par ligne : méthode readline() (obligatoire avec les fichiers de grande
taille)
Exemple:
fic = open('U:\\Documents\\...\\fic0.txt','r')
while 1 : # Boucle … infinie ! Car 1 est toujours vrai.
ligne = fic.readline() # Lecture d’une ligne
if ligne == "" : # Si la ligne est vide…
break # …on sort de la boucle
else : # Sinon…
print(ligne.strip()) # On supprime les caractères spéciaux
fic.close() # Fermeture
Ecriture dans un fichier
• Pour écrire dans un fichier, on commence par l’ouvrir en écriture
• avec l’option « w » pour « write »):
•  ce qui aura pour effet de l’écraser, s’il existait déjà!
•  Ensuite, on y écrit des chaînes de caractères via la méthode write.
•  La méthode write renvoie le nombre de caractères qui ont été écrits.
•  On peut choisir d’écrire à la fin du fichier préexistant, en prenant
comme option « a » (pour « append »)
•  Attention, ici la fermeture est cruciale :
•  c’est à cet instant que le fichier va réellement être écrit sur le disque.
Exemple
• fichier 1. mon_fichier = open fichier.txt", " w")
• 2. >>> mon_fichier.write ("Premier test d‘écriture dans un fichier via Python ")
• 3. >>> mon_fichier.close ()
•  Attention: La méthode write n'accepte en paramètre que des chaînes de caractères.
•  Pour écrire dans fichier des nombres, des scores par exemple,
• il vous faudra les convertir en chaîne avant de les écrire et les convertir en entier
après les avoir lus.

Vous aimerez peut-être aussi