Vous êtes sur la page 1sur 25

Partie 7 : Utilisation des fichiers

Enseignants préparatoire FSM

Faculté des Sciences de Monastir

1er avril 2021

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 1 / 25


Plan

1 Utilisation des fichiers


Ouverture d’un fichier
Fermeture d’un fichier

2 Les méthodes des fichiers


Écriture dans un fichier
Lecture d’un fichier

3 Les fichiers binaires


Ouverture/Fermeture
Écriture avec pickle

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 2 / 25


Utilisation des fichiers

Utiliser les fichiers


Utilité des fichiers
Les données gérées par les programmes sont stockés en mémoire elle sont
volatiles.
Les fichiers sont le moyen basique pour enregistrer les données de façon
permanente sur disque (même lorsque le programme est arrêté).

Type de fichiers
Texte (t) : est constitué d’une séquence de caractères
Binaire (b) : est constitué d’une séquence de bits, organisés octets.

Étapes d’utilisation des fichiers


1 Ouvrir un fichier
2 Traiter le fichier (lecture ou écriture).
3 Fermer le fichier.
Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 3 / 25
Utilisation des fichiers Ouverture d’un fichier

Modes d’ouverture des fichiers

Syntaxe
open(nomfichier, mode)
La fonction open() renvoie un objet fichier et est le plus souvent
utilisée avec deux arguments :

Mode Description
’r’ Ouvrir un fichier en lecture. (par défaut)
’w’ Ouvrir un fichier pour l’écriture. (avec remise à zéro)
’x’ Ouvrir un fichier pour une création exclusive.
’a’ Ouvrir un fichier en mode ajout.
’+’ Ouvrir un fichier en lecture et en écriture.
’b’ Mode binaire
’t’ Mode texte (par défaut)

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 4 / 25


Utilisation des fichiers Ouverture d’un fichier

Erreurs avec les fichiers

Mode lecture (’r’)


+ Si le fichier n’existe pas : Erreur
+ Si pas de droit d’écriture : Erreur

Mode écriture (’w’)


+ Si pas de droit d’écriture : Erreur
+ Si le fichier n’existe pas, il sera créé (par défaut à la racine du projet).
+ Si le fichier existe, alors ses données sont détruites.
+ Pour garder les anciennes données, utiliser le mode ajout (’a’).

Mode exclusive (’x’)


+ Si le fichier existe : Erreur
+ Sinon : le fichier est créé et ouvert en mode écriture.

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 5 / 25


Utilisation des fichiers Ouverture d’un fichier

Exemples d’ouverture de fichiers

1 # O u v r i r e un f i c h i e r en mode l e c t u r e
2 #Dans c e c a s l e f i c h i e r d o i t e x i s t e r
3 f 1 = open ( " h e l l o . t x t " , ’ r ’ )
4 f 1 = open ( " . / s o u r c e s / h e l l o . t x t " , ’ r t ’ )
5 f 1 = open ( "C : / Windows / programmes / h o s t s . b i n " , ’ r b ’ )
6 # O u v r i r e un f i c h i e r en mode e c r i t u r e :
7 f 1 = open ( " h e l l o . t x t " , ’w ’ )
8 f 1 = open ( " h e l l o . t x t " , ’ x ’ )
9 f 1 = open ( " h e l l o . t x t " , ’ a ’ )
10 f 1 = open ( " h e l l o . t x t " , ’ ab ’ )
11 f 1 = open ( " h e l l o . t x t " , ’ wb ’ )
12 # O u v r i r e un f i c h i e r en mode mise−a−j o u r :
13 f 1 = open ( " h e l l o . t x t " , ’ r+ ’ )
14 f 1 = open ( " h e l l o . t x t " , ’w+ ’ )
15 f 1 = open ( " h e l l o . t x t " , ’ x+ ’ )
16 f 1 = open ( " h e l l o . t x t " , ’ r+b ’ )
17 f 1 = open ( " h e l l o . t x t " , ’w+b ’ )

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 6 / 25


Utilisation des fichiers Ouverture d’un fichier

Exceptions avec les fichiers

Exception IOError
L’exception IOError est en fait une erreur générique d’entrée/sortie et on
peut se limiter à gérer cette dernière. Néanmoins, il est parfois utile de
gérer ses cas particuliers, parmi lesquels on a :

Exception Description
FileNotFoundError Si le fichier n’existe pas
FileExistsError Si le fichier existe déjà
PermissionError Si le programme n’a pas les droits d’accès
nécessaires sur le fichier
IsADirectoryError Si le fichier est en fait un dossier
NotADirectoryError Si un répertoire est en fait un fichier
EOFError Si on dépasse la fin de fichier

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 7 / 25


Utilisation des fichiers Ouverture d’un fichier

Exemple 1 : gestion d’exceptions

1 #O u v e r t u r e d ’ un f i c h i e r i n e x i s t a n t
2 try :
3 f i l e = open ( ’ e t u d i a n t s 1 . t x t ’ )
4 except IOError :
5 print (" Erreur : Erreur d ’ ouverture . ")

1 #O u v e r t u r e d ’ un f i c h i e r i n e x i s t a n t
2 try :
3 f i l e = open ( ’ e t u d i a n t s 1 . t x t ’ )
4 except FileNotFoundError :
5 print ( ’ Erreur : Fichier introuvable . ’ )
6 except IOError :
7 print (" Erreur : Erreur d ’ ouverture . ")

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 8 / 25


Utilisation des fichiers Ouverture d’un fichier

Exemple 2 : gestion d’exceptions

1 #O u v e r t u r e d ’ un f i c h i e r
2 try :
3 f i l e = open ( ’ r e p 1 ’ )
4 except FileNotFoundError :
5 print (" Erreur : Fichier introuvable . ")
6 except IsADirectoryError :
7 p r i n t ( " E r r e u r : Le f i c h i e r donne e s t un r e p e r t o i r e " )
8 except PermissionError :
9 p r i n t ( " E r r e u r : Vous n ’ a v e z p a s l e d r o i t de m o d i f i e r
le f i c h i e r ")
10 except IOError :
11 print (" Erreur : erreur d ’ ouverture c ’ est produite . ")

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 9 / 25


Utilisation des fichiers Fermeture d’un fichier

Fermeture des fichiers

Syntaxe méthode close()


nomfichier.close()
La fonction close() permet de libérer les ressources qui ont été
allouées en mémoire pour le traitement du fichier et le sauvegarde sur
disque.

1 try :
2 f = open ( " h e l l o . t x t " , ’w ’ )
3 p r i n t ( " O b j e t : { } \ nType {} " . f o r m a t ( f , t y p e ( f ) ) )
4 f . c l o s e ( ) #F e r m e t u r e de f i c h i e r
5 except FileNotFoundError :
6 print ( ’ Fichier introuvable . ’)
7 except IOError :
8 print (" Erreur d ’ ouverture . ")

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 10 / 25


Utilisation des fichiers Fermeture d’un fichier

Attention à la fermeture

1 # E r r e u r de f e r m e t u r e en c a s d ’ e c h e c d ’ o u v e r t u r e
2 try :
3 f 3 = open ( ’ h e l l o 3 . t x t ’ , ’ r ’ )
4 p r i n t ( f3 . read () )
5 except IOError :
6 print (" Erreur d ’ entree / s o r t i e . ")
7 finally :
8 f3 . close ()
9 try :
10 f 3 = open ( ’ h e l l o 1 3 . t x t ’ , ’ r ’ )
11 try :
12 p r i n t ( f3 . read () )
13 except IOError :
14 print (" Erreur d ’ ecriture . ")
15 finally :
16 f3 . close ()
17 except IOError :
18 print (" Erreur d ’ entree / s o r t i e . ")
Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 11 / 25
Utilisation des fichiers Fermeture d’un fichier

L’instruction with

Instruction with
Python propose une solution plus élégante pour proprement gérer un
contexte avec l’instruction with.
Syntaxe : with open(nomfichier, mode) as var_fichier
+ L’appel à close() sera fait automatiquement
+ Attention : Il faut garder le try/except pour les erreurs.

1 try :
2 w i t h open ( ’ e t u d i a n t s . t x t ’ , ’w ’ ) a s f :
3 # T r a i t e m e n t du f i c h i e r
4 except FileNotFoundError :
5 print ( ’ Fichier introuvable . ’)
6 except IOError :
7 print (" Erreur d ’ entree / s o r t i e . ")

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 12 / 25


Les méthodes des fichiers

Les méthodes des fichiers

Méthodes Description
f.close() Fermer le fichier f après utilisation.
f.write(str) Écrire la chaîne str dans le fichier f.
f.writelines(l) Écrire les lignes de la liste l dans le fichier f.
f.read([n]) Lire l’intégrité (ou n caractères) du contenu du fichier
f.
f.readline() Lire une ligne du fichier f.
f.readlines() Lire et renvoie une liste composés des ligne qui forment
le fichier f
f.seek(n) Pour modifier la position dans le fichier

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 13 / 25


Les méthodes des fichiers Écriture dans un fichier

Écriture dans un fichier


Pour écrire dans un fichier, on utilise généralement la méthode open()
avec les modes d’écriture ’w’ ou ’a’.
L’ouverture d’un fichier avec ces modes permet de créer le fichier s’il
n’existe pas.
Deux méthodes d’écriture : write() et writelines()

Syntaxe : nom_fichier.write(chaîne_de_caractères)
La fonction write() permet d’ajouter des chaînes de caractères au fichier.
L’écriture peut échouer et provoquer une exception IOError. Par exemple
si l’espace disque devient plein pendant l’écriture.

Syntaxe : nom_fichier.writelines(Liste_de_chaînes)
La fonction writelines() permet d’écrire directement le contenu d’une liste
de chaînes de caractères.
Il faut insérer le caractère "\n" pour que le saut de ligne soit effectif dans
le fichier.
Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 14 / 25
Les méthodes des fichiers Écriture dans un fichier

Écriture dans un fichier avec write()

1 try :
2 #E c r i t u r e d a n s un f i c h i e r
3 f 1 = open ( ’ t a b l e _ m u l t i p l i c a t i o n . t x t ’ , ’w ’ )
4 f 1 . w r i t e ( ’ T a b l e de 10 : \ n ’ )
5 f o r i in range (10) :
6 f 1 . w r i t e ( ’ {} x 10 = {}\ n ’ . f o r m a t ( i , i ∗ 1 0 ) )
7 f1 . close ()
8 except FileNotFoundError :
9 print ( ’ Fichier introuvable . ’)
10 except IOError :
11 print (" Erreur d ’ entree / s o r t i e . ")

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 15 / 25


Les méthodes des fichiers Écriture dans un fichier

Écriture dans un fichier avec writelines()

1 try :
2 f 1 = open ( ’ v o i t u r e s . t x t ’ , ’w ’ )
3 l s t = [ " megane \n" , " c l i o \n" , " l a g u n a \n" , " t w i n g o " ]
4 f 1 . w r i t e l i n e s ( l s t ) #E c r i t u r e de l s t d a n s l e f i c h i e r
5 f1 . close ()
6 except IOError :
7 print (" Erreur d ’ entree / s o r t i e . ")
8 try :
9 f 2 = open ( ’ t a b l e _ m u l t i p l i c a t i o n . t x t ’ , ’ a ’ )
10 f 2 . w r i t e ( ’ T a b l e de 9 : \ n ’ )
11 lst = []
12 f o r i in range (10) :
13 l s t += [ ’ {} x 9= {}\ n ’ . f o r m a t ( i , i ∗ 9 ) ]
14 f2 . w r i t e l i n e s ( l s t )
15 f2 . close ()
16 except IOError :
17 print (" Erreur d ’ entree / s o r t i e . ")

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 16 / 25


Les méthodes des fichiers Lecture d’un fichier

Exemple 1 : Lecture en bloc avec read()

variable = nomfichier.read()
La fonction read(), sans paramètres, permet lire l’intégralité du fichier et
renvoyer son contenu sous forme d’une chaîne de caractères.
La lecture peut échouer et provoquer une exception IOError. Par exemple
si le disque est déconnecté pendant la lecture.

1 try :
2 w i t h open ( ’ h e l l o . t x t ’ , ’ r ’ ) a s f 1 , open ( ’ e t u d i a n t s . t x t
’ , ’ r ’ ) as f2 :
3 p r i n t ( " Contenu f i c h i e r ’ h e l l o ’ : \ n" , f 1 . r e a d ( ) )
4 p r i n t ( " Contenu f i c h i e r ’ e t u d i a n t s : \ n" , f 2 . r e a d ( ) )
5 except FileNotFoundError :
6 print (" Fichier introuvable . ")
7 except IOError :
8 print (" Erreur d ’ entree / s o r t i e . ")

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 17 / 25


Les méthodes des fichiers Lecture d’un fichier

Exemple 2 : Lecture par morceau

1 # L e c t u r e du f i c h i e r p a r morceau
2 f l = open ( " h e l l o . t x t " , ’ r ’ )
3 p1 = f l . r e a d ( 1 5 )
4 p2 = f l . r e a d ( 1 0 )
5 p3 = f l . r e a d ( 4 5 )
6 p r i n t ( " ( { } ) : {} " . f o r m a t ( l e n ( p1 ) , p1 ) , end=" −−||\n" )
7 p r i n t ( " ( { } ) : {} " . f o r m a t ( l e n ( p2 ) , p2 ) , end=" −−||\n" )
8 p r i n t ( " ( { } ) : {} " . f o r m a t ( l e n ( p3 ) , p3 ) , end=" −−||\n" )
9 f l . close ()
10 # resultat d ’ affichage :
11 ( 1 5 ) : h e l l o t h e w o r l d −−||
12 (10) :
13 h e l l o the −−||
14 (45) : world
15 h e l l o the world
16 h e l l o the world
17 h e l l o −−||

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 18 / 25


Les méthodes des fichiers Lecture d’un fichier

Exemple 3 : Déplacement dans un fichier

1 f = open ( ’ h e l l o 1 . t x t ’ , ’ r+ ’ )
2 f . w r i t e ( ’ 0123456789 a b c d e f ’ )
3 f . seek (3) # A l l e r au 4eme c a r a c t e r e
4 p r i n t ( f . read (2) )
5 p r i n t ( f . read (1) )
6 f . seek (7) # A l l e r au 8eme c a r a c t e r e
7 p r i n t ( f . read (1) )
8 p r i n t ( f . read () )
9 f . seek (0) # A l l e r au d e b u t du f i c h i e r
10 p r i n t ( f . read () )
11
12 # Resultat :
13 34
14 5
15 7
16 89 a b c d e f
17 0123456789 a b c d e f

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 19 / 25


Les méthodes des fichiers Lecture d’un fichier

Exemple 4 :Lecture ligne par ligne

1 # O u v r i r l e f i c h i e r en l e c t u r e s e u l e
2 f 1 = open ( ’ h e l l o . t x t ’ , " r " )
3 # u t i l i s e z r e a d l i n e ( ) pour l i r e l a p r e mi e r e l i g n e
4 l i n e = f1 . r e a d l i n e ()
5 while l i n e :
6 print ( line )
7 # u t i l i s e z r e a d l i n e ( ) pour l i r e l a l i g n e s u i v a n t e
8 l i n e = f1 . r e a d l i n e ()
9 f1 . close ()
10
11 # O u v r i r l e f i c h i e r en l e c t u r e s e u l e
12 f 2 = open ( ’ h e l l o . t x t ’ , " r " )
13 for l i n e in f2 :
14 print ( line )
15 f2 . close ()

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 20 / 25


Les méthodes des fichiers Lecture d’un fichier

Exemple 5 : Lecture de tous les lignes

1 try :
2 w i t h open ( ’ h e l l o . t x t ’ , ’ r ’ ) a s f l :
3 # u t i l i s e r r e a d l i n e s pour l i r e t o u t e s l e s l i g n e s
du f i c h i e r e t l e s p l a c e r d a n s une l i s t e ( v a r i a b l e l i n e s )
4 l i n e s = f l . readlines ()
5 #A f f i c h a g e du c o n t e n u de l a v a r i a b l e l i n e s
6 p r i n t ( " ∗∗ Contenu de l a v a r i a b l e l i n e s ∗∗ " )
7 p r i n t ( l i n e s , t y p e ( l i n e s ) , s e p=" \n" )
8 # I t e r e r sur l a l i s t e des l i g n e s
9 for line in l i n e s :
10 l = l i n e . r s t r i p ()
11 p r i n t ( l , l e n ( l ) , s e p=" : " , end="−" )
12 except FileNotFoundError :
13 print ( ’ Fichier introuvable . ’)
14 except IOError :
15 print (" Erreur d ’ entree / s o r t i e . ")

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 21 / 25


Les fichiers binaires Ouverture/Fermeture

Ouverture/Fermeture d’un fichier binaire

Avantages par rapport au fichier texte :


Plus compact en terme d’espace occupé
Rapide à lire/écrire.
Difficultés :
Connaître le format d’un fichier binaire pour le manipuler
(l’organisation des données dans le fichier)
L’ouverture et la fermeture d’un fichier binaire se fait de la même
manière qu’avec un fichier texte en spécifiant le bon mode :
wb : écriture uniquement. Remplace le fichier binaire s’il existe. Sinon,
crée un nouveau fichier binaire pour l’écriture.
wb+ : écriture et lecture. Remplace le fichier binaire s’il est fermé.
Sinon, crée un nouveau fichier binaire pour l’écriture.
rb : lecture seule. Définit le pointeur de fichier au début du fichier
binaire.
rb+ : lecture et écriture. Définit le pointeur de fichier au début du
fichier binaire
Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 22 / 25
Les fichiers binaires Écriture avec pickle

Écriture d’objets avec pickle

Fonction dump()
Syntaxe : dump (obj, fichier, option)
La fonction dump() permet d’écrire un objet dans le fichier binaire :
obj : l’objet à écrire, dit objet picklable (ou sérialisables).
Les objets picklables : booléens, entiers, flottants, nombre complexes,
chaînes, tuples, listes et dictionnaires contenant des objets picklables.
fichier : le fichier où écrire l’objet.
option : définit la manière avec laquelle les objets sont traduits en
binaire (souvent fixée à pickle.HIGHEST_PROTOCOL).
Les objets sont écrits successivement dans le fichier.
Erreur de type PicklingError si l’objet ne sait pas être converti.

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 23 / 25


Les fichiers binaires Écriture avec pickle

Exemple écriture d’objets avec pickle

1 #I m p o r t a i o n du module p i c k l e
2 import p i c k l e
3 ch = " H e l l o The World ! "
4 d i c = {" a l i a s " : " x a v k i " ,
5 " prenom " : " x a v i e r " ,
6 " v i l l e " : "paris" ,
7 " notes " : [12 ,11.5 ,9 ,15]
8 }
9 try :
10 #O u v e r t u r e du f i c h i e r i n f o . b i n en mode b i n a i r e e t en
ecriture
11 w i t h open ( ’ i n f o . b i n ’ , ’ wb ’ ) a s f 1 :
12 p i c k l e . dump ( ch , f 1 )
13 p i c k l e . dump ( d i c , f 1 )
14 except ( IOError , p i c k l e . P i c k l i n g E r r o r ) :
15 print (" Erreur d ’ ecriture . ")

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 24 / 25


Les fichiers binaires Écriture avec pickle

Lecture d’objets avec pickle


Fonction load()
Syntaxe : load (fichier)
La fonction load() permet de lire un objet depuis un fichier binaire.
Les objets sont lus successivement dans le fichier.
Erreur de type UnpicklingError si l’objet ne sait pas être lu.

1 import p i c k l e
2
3 try :
4 w i t h open ( ’ i n f o . b i n ’ , ’ r b ’ ) a s f 1 :
5 ch = p i c k l e . l o a d ( f 1 )
6 dic = p i c k l e . load ( f2 )
7 p r i n t ( ch , d i c , s e p= ’ \n ’ )
8 except ( IOError , p i c k l e . U n p i c k l i n g E r r o r ) :
9 p r i n t ( ’ E r r e u r de l e c t u r e . ’ )

Enseignants Prepa FSM (MP/PC) Les fichiers 1er avril 2021 25 / 25

Vous aimerez peut-être aussi