Académique Documents
Professionnel Documents
Culture Documents
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.
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)
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 ’ )
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
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 . ")
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 . ")
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 . ")
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 . ")
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
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
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 . ")
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 . ")
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 . ")
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 −−||
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
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 ()
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 . ")
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.
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 . ")
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 . ’ )