0% ont trouvé ce document utile (0 vote)
18 vues94 pages

10 Exceptions Fichiers

Transféré par

kamwavirginie4
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
18 vues94 pages

10 Exceptions Fichiers

Transféré par

kamwavirginie4
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Algorithmique et Programmation

Fichiers textuels et exceptions

Elise Bonzon
[Link]@[Link]

LIPADE - Université Paris Descartes


[Link]

1
Fichiers textuels et exceptions

1. Gestion des exceptions

2. Fichiers textuels

3. Pour conclure

2
Gestion des exceptions
Phénomènes exceptionnels

Il est possible de rencontrer des erreurs dans un calcul, provenant souvent


de la mauvaise gestion d’un cas particulier.

3
Phénomènes exceptionnels

Il est possible de rencontrer des erreurs dans un calcul, provenant souvent


de la mauvaise gestion d’un cas particulier.
>>> liste = [1 , 2 , 3 , 4 , 5 , 6]
>>> liste [6]

3
Phénomènes exceptionnels

Il est possible de rencontrer des erreurs dans un calcul, provenant souvent


de la mauvaise gestion d’un cas particulier.
>>> liste = [1 , 2 , 3 , 4 , 5 , 6]
>>> liste [6]
IndexError : list index out of range

3
Phénomènes exceptionnels

Il est possible de rencontrer des erreurs dans un calcul, provenant souvent


de la mauvaise gestion d’un cas particulier.
>>> liste = [1 , 2 , 3 , 4 , 5 , 6]
>>> liste [6]
IndexError : list index out of range
>>> 2/ x

3
Phénomènes exceptionnels

Il est possible de rencontrer des erreurs dans un calcul, provenant souvent


de la mauvaise gestion d’un cas particulier.
>>> liste = [1 , 2 , 3 , 4 , 5 , 6]
>>> liste [6]
IndexError : list index out of range
>>> 2/ x
NameError : name ’x ’ is not defined

3
Phénomènes exceptionnels

Il est possible de rencontrer des erreurs dans un calcul, provenant souvent


de la mauvaise gestion d’un cas particulier.
>>> liste = [1 , 2 , 3 , 4 , 5 , 6]
>>> liste [6]
IndexError : list index out of range
>>> 2/ x
NameError : name ’x ’ is not defined
>>> 2/0

3
Phénomènes exceptionnels

Il est possible de rencontrer des erreurs dans un calcul, provenant souvent


de la mauvaise gestion d’un cas particulier.
>>> liste = [1 , 2 , 3 , 4 , 5 , 6]
>>> liste [6]
IndexError : list index out of range
>>> 2/ x
NameError : name ’x ’ is not defined
>>> 2/0
Z e r o D i vi s i o n E r r o r : division by zero

3
Phénomènes exceptionnels

Il est possible de rencontrer des erreurs dans un calcul, provenant souvent


de la mauvaise gestion d’un cas particulier.
>>> liste = [1 , 2 , 3 , 4 , 5 , 6]
>>> liste [6]
IndexError : list index out of range
>>> 2/ x
NameError : name ’x ’ is not defined
>>> 2/0
Z e r o D i vi s i o n E r r o r : division by zero

• IndexError, NameError, ZeroDivisionError... sont des


exceptions
• Si on ne fait rien, le programme s’arrête brutalement et affiche la
trace d’exécution, c’est à dire le contexte dans lequel l’erreur a été
levée

3
Trace d’exécution

1 def f ( x ):
2 return g ( x ) + 1
3
4 def g ( x ):
5 return 1/ x
6
7 f (0)

4
Trace d’exécution

1 def f ( x ):
2 return g ( x ) + 1
3
4 def g ( x ):
5 return 1/ x
6
7 f (0)

Traceback ( most recent call last ):


File " exple . py " , line 7 , in < module >
f (0)
File " exple . py " , line 2 , in f
return g ( x ) + 1
File " exple . py " , line 5 , in g
return 1/ x
Z e r o D i vi s i o n E r r o r : division by zero

4
Lever une exception

• On sait déjà comment lever une exception


• Instruction assert

5
Lever une exception

• On sait déjà comment lever une exception


• Instruction assert

def moyenne ( liste ) :


""" List --> Float . Calcule la moyenne de la liste """
assert len ( liste ) > 0 , " Moyenne d ’ une liste vide "
return somme ( liste )/ len ( liste )

5
Lever une exception

• On sait déjà comment lever une exception


• Instruction assert

def moyenne ( liste ) :


""" List --> Float . Calcule la moyenne de la liste """
assert len ( liste ) > 0 , " Moyenne d ’ une liste vide "
return somme ( liste )/ len ( liste )

>>> moyenne ([])


AssertionError : Moyenne d ’ une liste vide

5
Lever une exception

• On sait déjà comment lever une exception


• Instruction assert

def moyenne ( liste ) :


""" List --> Float . Calcule la moyenne de la liste """
assert len ( liste ) > 0 , " Moyenne d ’ une liste vide "
return somme ( liste )/ len ( liste )

>>> moyenne ([])


AssertionError : Moyenne d ’ une liste vide

• Permet d’avoir des messages d’erreur plus lisibles, et de corriger son


code plus facilement
• Mais ne permet pas d’éviter l’erreur

5
Comment éviter les exceptions ?

• Les erreurs ne sont pas forcément des erreurs de programmation


• Peuvent être dues à des informations incorrectes fournies par
l’utilisateur

6
Comment éviter les exceptions ?

• Les erreurs ne sont pas forcément des erreurs de programmation


• Peuvent être dues à des informations incorrectes fournies par
l’utilisateur

def verif_min (i , j ) :
if i < j :
return True
else :
return False

6
Comment éviter les exceptions ?

• Les erreurs ne sont pas forcément des erreurs de programmation


• Peuvent être dues à des informations incorrectes fournies par
l’utilisateur

def verif_min (i , j ) :
if i < j :
return True
else :
return False

>>> min ( ’a ’ , 2)
Traceback ( most recent call last ):
TypeError : ’ < ’ not supported between instances of ’ str ’ and ’ int ’

6
Comment éviter les exceptions ?

• Idée : vérifier les informations, et appeler les instructions une fois


que l’on est sur de ne pas faire d’erreur

7
Comment éviter les exceptions ?

• Idée : vérifier les informations, et appeler les instructions une fois


que l’on est sur de ne pas faire d’erreur

def verif_min (i , j ) :
if type ( i ) == type ( j ) :
if i < j :
return True
else :
return False
else :
return False

7
Comment éviter les exceptions ?

• Idée : vérifier les informations, et appeler les instructions une fois


que l’on est sur de ne pas faire d’erreur

def verif_min (i , j ) :
if type ( i ) == type ( j ) :
if i < j :
return True
else :
return False
else :
return False

• Mais il est facile d’oublier des cas

7
Comment éviter les exceptions ?

• Idée : vérifier les informations, et appeler les instructions une fois


que l’on est sur de ne pas faire d’erreur

def verif_min (i , j ) :
if type ( i ) == type ( j ) :
if i < j :
return True
else :
return False
else :
return False

• Mais il est facile d’oublier des cas

>>> verif_min (2 , 3.0)


False

7
Gérer les exceptions

• Au lieu de chercher à éviter les instructions, il est possible de les


anticiper, pour mieux les gérer

8
Gérer les exceptions

• Au lieu de chercher à éviter les instructions, il est possible de les


anticiper, pour mieux les gérer

def verif_min (i , j ) :
try :
if i < j :
return True
else :
return False
except :
return False

8
Gérer les exceptions

• Au lieu de chercher à éviter les instructions, il est possible de les


anticiper, pour mieux les gérer

def verif_min (i , j ) :
try :
if i < j :
return True
else :
return False
except :
return False

>>> verif_min (2 , 3.0)


True
>>> verif_min ( ’a ’ , 2)
False

8
Gestion des des exceptions : syntaxe

try :
< sequence_instructions1 >
except :
< sequence_instructions2 >

9
Gestion des des exceptions : syntaxe

try :
< sequence_instructions1 >
except :
< sequence_instructions2 >

• Si au cours de l’exécution de la sequence_instructions1 une


exception se produit, l’exécution du bloc est abandonnée, et la
sequence_instructions2 est exécutée

9
Gestion des des exceptions : syntaxe

try :
< sequence_instructions1 >
except :
< sequence_instructions2 >

• Si au cours de l’exécution de la sequence_instructions1 une


exception se produit, l’exécution du bloc est abandonnée, et la
sequence_instructions2 est exécutée
• Si l’exécution de sequence_instructions1 s’est déroulée
normalement, on ne rentre pas dans le bloc except

9
Gestion des des exceptions particulières

• Il y a différents types d’exceptions : IndexError, NameError,


ZeroDivisionError...

10
Gestion des des exceptions particulières

• Il y a différents types d’exceptions : IndexError, NameError,


ZeroDivisionError...
• Il est possible de ne vouloir gérer que certaines exceptions, ou de
faire des traitements différents en fonction de du type d’erreur
rencontrée

10
Gestion des des exceptions particulières

• Il y a différents types d’exceptions : IndexError, NameError,


ZeroDivisionError...
• Il est possible de ne vouloir gérer que certaines exceptions, ou de
faire des traitements différents en fonction de du type d’erreur
rencontrée

try :
< sequence_instructions1 > # s é quence normale d ’ ex é cution
except < type_exception1 > :
< sequence_instructions2 > # traitement de l ’ exception 1
except < type_exception2 > :
< sequence_instructions3 > # traitement de l ’ exception 2
...
else :
# bloc d ’ instruction ex é cut é en l ’ absence d ’ erreurs
< sequence_instruction4 >

10
Gestion des exceptions : un exemple

def div (a , b ) :
""" Int x Int --> None
Affiche le r é sultat de la division de a par b si il existe """
try :
a/b
except Z e r o D i v i s i o n E r r o r :
print ( " Une division par 0 a é t é d é tect é e " )
else :
print ( " pas de division par 0 " )
print ( " la division de " , a , " par " , b , " donne " , a / b )

11
Gestion des exceptions : un exemple

def div (a , b ) :
""" Int x Int --> None
Affiche le r é sultat de la division de a par b si il existe """
try :
a/b
except Z e r o D i v i s i o n E r r o r :
print ( " Une division par 0 a é t é d é tect é e " )
else :
print ( " pas de division par 0 " )
print ( " la division de " , a , " par " , b , " donne " , a / b )

>>> div (10 ,5)


pas de division par 0
la division de 10 par 5 donne 2.0

11
Gestion des exceptions : un exemple

def div (a , b ) :
""" Int x Int --> None
Affiche le r é sultat de la division de a par b si il existe """
try :
a/b
except Z e r o D i v i s i o n E r r o r :
print ( " Une division par 0 a é t é d é tect é e " )
else :
print ( " pas de division par 0 " )
print ( " la division de " , a , " par " , b , " donne " , a / b )

>>> div (10 ,5)


pas de division par 0
la division de 10 par 5 donne 2.0
>>> div (10 ,0)
Une division par 0 a é t é d é tect é e

11
Gestion des exceptions : un exemple

def div (a , b ) :
""" Int x Int --> None
Affiche le r é sultat de la division de a par b si il existe """
try :
a/b
except Z e r o D i v i s i o n E r r o r :
print ( " Une division par 0 a é t é d é tect é e " )
else :
print ( " pas de division par 0 " )
print ( " la division de " , a , " par " , b , " donne " , a / b )

>>> div (10 ,5)


pas de division par 0
la division de 10 par 5 donne 2.0
>>> div (10 ,0)
Une division par 0 a é t é d é tect é e
>>> div (10 , ’a ’)
TypeError : unsupported operand type ( s ) for /: ’ int ’ and ’ str ’

11
Gestion des exceptions : un exemple

def div (a , b ) :
""" Int x Int --> None
Affiche le r é sultat de la division de a par b si il existe """
try :
a/b
except Z e r o D i v i s i o n E r r o r :
print ( " Une division par 0 a é t é d é tect é e " )
except :
print ( " Une autre erreur a é t é trouv é e " )
else :
print ( " pas de division par 0 " )
print ( " la division de " , a , " par " , b , " donne " , a / b )

12
Gestion des exceptions : un exemple

def div (a , b ) :
""" Int x Int --> None
Affiche le r é sultat de la division de a par b si il existe """
try :
a/b
except Z e r o D i v i s i o n E r r o r :
print ( " Une division par 0 a é t é d é tect é e " )
except :
print ( " Une autre erreur a é t é trouv é e " )
else :
print ( " pas de division par 0 " )
print ( " la division de " , a , " par " , b , " donne " , a / b )

>>> div (10 ,5)


pas de division par 0
la division de 10 par 5 donne 2.0
>>> div (10 ,0)
Une division par 0 a é t é d é tect é e

12
Gestion des exceptions : un exemple

def div (a , b ) :
""" Int x Int --> None
Affiche le r é sultat de la division de a par b si il existe """
try :
a/b
except Z e r o D i v i s i o n E r r o r :
print ( " Une division par 0 a é t é d é tect é e " )
except :
print ( " Une autre erreur a é t é trouv é e " )
else :
print ( " pas de division par 0 " )
print ( " la division de " , a , " par " , b , " donne " , a / b )

>>> div (10 ,5)


pas de division par 0
la division de 10 par 5 donne 2.0
>>> div (10 ,0)
Une division par 0 a é t é d é tect é e
>>> div (10 , ’a ’)
Une autre erreur a é t é trouv é e 12
Fichiers textuels
Les fichiers

Fichier
Fichier : collection d’informations stockées sur une mémoire de masse
(disque dur, clef usb, CD, ...). On y accède grâce à son nom (précédée
si besoin du chemin d’accès vers ce fichier.)

13
Les fichiers

Fichier
Fichier : collection d’informations stockées sur une mémoire de masse
(disque dur, clef usb, CD, ...). On y accède grâce à son nom (précédée
si besoin du chemin d’accès vers ce fichier.)

• Pour simplifier, dans ce cours :

13
Les fichiers

Fichier
Fichier : collection d’informations stockées sur une mémoire de masse
(disque dur, clef usb, CD, ...). On y accède grâce à son nom (précédée
si besoin du chemin d’accès vers ce fichier.)

• Pour simplifier, dans ce cours :


• On suppose que tous les fichiers manipulés se trouvent dans le
répertoire courant

13
Les fichiers

Fichier
Fichier : collection d’informations stockées sur une mémoire de masse
(disque dur, clef usb, CD, ...). On y accède grâce à son nom (précédée
si besoin du chemin d’accès vers ce fichier.)

• Pour simplifier, dans ce cours :


• On suppose que tous les fichiers manipulés se trouvent dans le
répertoire courant
• On ne manipule que des fichiers textes

13
Les fichiers

Fichier
Fichier : collection d’informations stockées sur une mémoire de masse
(disque dur, clef usb, CD, ...). On y accède grâce à son nom (précédée
si besoin du chemin d’accès vers ce fichier.)

• Pour simplifier, dans ce cours :


• On suppose que tous les fichiers manipulés se trouvent dans le
répertoire courant
• On ne manipule que des fichiers textes
• 2 opérations distinctes sur les fichiers :

13
Les fichiers

Fichier
Fichier : collection d’informations stockées sur une mémoire de masse
(disque dur, clef usb, CD, ...). On y accède grâce à son nom (précédée
si besoin du chemin d’accès vers ce fichier.)

• Pour simplifier, dans ce cours :


• On suppose que tous les fichiers manipulés se trouvent dans le
répertoire courant
• On ne manipule que des fichiers textes
• 2 opérations distinctes sur les fichiers :
• On peut vouloir écrire des données dans un fichier : accès en écriture

13
Les fichiers

Fichier
Fichier : collection d’informations stockées sur une mémoire de masse
(disque dur, clef usb, CD, ...). On y accède grâce à son nom (précédée
si besoin du chemin d’accès vers ce fichier.)

• Pour simplifier, dans ce cours :


• On suppose que tous les fichiers manipulés se trouvent dans le
répertoire courant
• On ne manipule que des fichiers textes
• 2 opérations distinctes sur les fichiers :
• On peut vouloir écrire des données dans un fichier : accès en écriture
• On peut vouloir lire des données à partir d’un fichier : accès en
lecture

13
Ouverture d’un fichier en écriture – append

mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)

• La fonction intégrée open() permet de créer un objet-fichier

14
Ouverture d’un fichier en écriture – append

mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)

• La fonction intégrée open() permet de créer un objet-fichier


• open() attend 2 arguments, sous forme de chaı̂nes de caractères

14
Ouverture d’un fichier en écriture – append

mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)

• La fonction intégrée open() permet de créer un objet-fichier


• open() attend 2 arguments, sous forme de chaı̂nes de caractères
1. Le nom du fichier à ouvrir

14
Ouverture d’un fichier en écriture – append

mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)

• La fonction intégrée open() permet de créer un objet-fichier


• open() attend 2 arguments, sous forme de chaı̂nes de caractères
1. Le nom du fichier à ouvrir
2. Le mode d’ouverture

14
Ouverture d’un fichier en écriture – append

mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)

• La fonction intégrée open() permet de créer un objet-fichier


• open() attend 2 arguments, sous forme de chaı̂nes de caractères
1. Le nom du fichier à ouvrir
2. Le mode d’ouverture
• L’option ’a’ permet d’ouvrir le fichier en mode ajout (append)

14
Ouverture d’un fichier en écriture – append

mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)

• La fonction intégrée open() permet de créer un objet-fichier


• open() attend 2 arguments, sous forme de chaı̂nes de caractères
1. Le nom du fichier à ouvrir
2. Le mode d’ouverture
• L’option ’a’ permet d’ouvrir le fichier en mode ajout (append)
• S’il existe un fichier du nom indiqué, les données enregistrées sont
ajoutées à la fin du fichier

14
Ouverture d’un fichier en écriture – append

mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)

• La fonction intégrée open() permet de créer un objet-fichier


• open() attend 2 arguments, sous forme de chaı̂nes de caractères
1. Le nom du fichier à ouvrir
2. Le mode d’ouverture
• L’option ’a’ permet d’ouvrir le fichier en mode ajout (append)
• S’il existe un fichier du nom indiqué, les données enregistrées sont
ajoutées à la fin du fichier
• S’il n’existe pas de fichier de ce nom, un nouveau fichier est créé

14
Ouverture d’un fichier en écriture – write

mon_fichier = open ( ’ Monfichier . txt ’ , ’w ’)

• L’option ’w’ permet d’ouvrir le fichier en mode écriture (write)

15
Ouverture d’un fichier en écriture – write

mon_fichier = open ( ’ Monfichier . txt ’ , ’w ’)

• L’option ’w’ permet d’ouvrir le fichier en mode écriture (write)


• S’il existe un fichier du nom indiqué, ce fichier est écrasé, et
l’écriture des données commence à partir du début d’un nouveau
fichier, vide.

15
Ouverture d’un fichier en écriture – write

mon_fichier = open ( ’ Monfichier . txt ’ , ’w ’)

• L’option ’w’ permet d’ouvrir le fichier en mode écriture (write)


• S’il existe un fichier du nom indiqué, ce fichier est écrasé, et
l’écriture des données commence à partir du début d’un nouveau
fichier, vide.
• S’il n’existe pas de fichier de ce nom, un nouveau fichier est créé

15
Ecriture séquentielle dans un fichier

mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)


mon_fichier . write ( ’ Bonjour !\ n ’)
mon_fichier . write ( ’ Saperlipopette ! ’)
mon_fichier . write ( ’ Dit le po è te ! ’)
mon_fichier . close ()

• La méthode write() écrit les données voulues dans le fichier

16
Ecriture séquentielle dans un fichier

mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)


mon_fichier . write ( ’ Bonjour !\ n ’)
mon_fichier . write ( ’ Saperlipopette ! ’)
mon_fichier . write ( ’ Dit le po è te ! ’)
mon_fichier . close ()

• La méthode write() écrit les données voulues dans le fichier


• Les données sont enregistrées les unes à la suite des autres

16
Ecriture séquentielle dans un fichier

mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)


mon_fichier . write ( ’ Bonjour !\ n ’)
mon_fichier . write ( ’ Saperlipopette ! ’)
mon_fichier . write ( ’ Dit le po è te ! ’)
mon_fichier . close ()

• La méthode write() écrit les données voulues dans le fichier


• Les données sont enregistrées les unes à la suite des autres
• Si le caractère de retour à la ligne \n n’est pas indiqué, le prochain
write() se fera sur la même ligne

16
Ecriture séquentielle dans un fichier

mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)


mon_fichier . write ( ’ Bonjour !\ n ’)
mon_fichier . write ( ’ Saperlipopette ! ’)
mon_fichier . write ( ’ Dit le po è te ! ’)
mon_fichier . close ()

• La méthode write() écrit les données voulues dans le fichier


• Les données sont enregistrées les unes à la suite des autres
• Si le caractère de retour à la ligne \n n’est pas indiqué, le prochain
write() se fera sur la même ligne
• La méthode close() ferme le fichier

16
Ecriture séquentielle dans un fichier

mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)


mon_fichier . write ( ’ Bonjour !\ n ’)
mon_fichier . write ( ’ Saperlipopette ! ’)
mon_fichier . write ( ’ Dit le po è te ! ’)
mon_fichier . close ()

• La méthode write() écrit les données voulues dans le fichier


• Les données sont enregistrées les unes à la suite des autres
• Si le caractère de retour à la ligne \n n’est pas indiqué, le prochain
write() se fera sur la même ligne
• La méthode close() ferme le fichier
• Les écritures sont mises en tampon, elles ne prennent pas forcément
effet immédiatement. Elles peuvent ne pas être enregistrées tant que
le fichier n’est pas fermé !

16
Ecriture séquentielle dans un fichier

mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)


mon_fichier . write ( ’ Bonjour !\ n ’)
mon_fichier . write ( ’ Saperlipopette ! ’)
mon_fichier . write ( ’ Dit le po è te ! ’)
mon_fichier . close ()

• La méthode write() écrit les données voulues dans le fichier


• Les données sont enregistrées les unes à la suite des autres
• Si le caractère de retour à la ligne \n n’est pas indiqué, le prochain
write() se fera sur la même ligne
• La méthode close() ferme le fichier
• Les écritures sont mises en tampon, elles ne prennent pas forcément
effet immédiatement. Elles peuvent ne pas être enregistrées tant que
le fichier n’est pas fermé !
• Ne pas oublier le close() donc !

16
Formater les écritures

• La méthode write() ne permet d’écrire que des chaines de


caractères

17
Formater les écritures

• La méthode write() ne permet d’écrire que des chaines de


caractères
• Pour écrire un nombre, il faut donc le transformer en str d’abord

17
Formater les écritures

• La méthode write() ne permet d’écrire que des chaines de


caractères
• Pour écrire un nombre, il faut donc le transformer en str d’abord

>>> mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)


>>> mon_fichier . write (1975)

17
Formater les écritures

• La méthode write() ne permet d’écrire que des chaines de


caractères
• Pour écrire un nombre, il faut donc le transformer en str d’abord

>>> mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)


>>> mon_fichier . write (1975)
TypeError : write () argument must be str , not int

17
Formater les écritures

• La méthode write() ne permet d’écrire que des chaines de


caractères
• Pour écrire un nombre, il faut donc le transformer en str d’abord

>>> mon_fichier = open ( ’ Monfichier . txt ’ , ’a ’)


>>> mon_fichier . write (1975)
TypeError : write () argument must be str , not int
>>> mon_fichier . write ( str (1975))

17
Un exemple : générer un fichier contenant une table de multi-
plication

def table_fichier ( n ) :
""" Int --> None
Cr é é un fichier contenant la table de multiplication de n """

# Cr é er le fichier
f_table = open ( " table " + str ( n ) + " . txt " , " w " )

# Ecriture dans le fichier


for i in range (1 , 11):
f_table . write ( str ( i ) + ’* ’ + str ( n ) + ’= ’ + str ( i * n ) + ’\ n ’)

# Fermeture du fichier
f_table . close ()

18
Un exemple : générer un fichier contenant une table de multi-
plication

>>> table_fichier ( n )

more table7 . txt


1*7=7
2*7=14
3*7=21
4*7=28
5*7=35
6*7=42
7*7=49
8*7=56
9*7=63
10*7=70

19
Ouverture d’un fichier en lecture

mon_fichier = open ( ’ Monfichier . txt ’ , ’r ’)

20
Ouverture d’un fichier en lecture

mon_fichier = open ( ’ Monfichier . txt ’ , ’r ’)

• L’option ’r’ permet d’ouvrir le fichier en mode lecture (read)

20
Ouverture d’un fichier en lecture

mon_fichier = open ( ’ Monfichier . txt ’ , ’r ’)

• L’option ’r’ permet d’ouvrir le fichier en mode lecture (read)


• S’il n’existe pas de fichier de ce nom, une exception est levée :
FileNotFoundError

20
Ouverture d’un fichier en lecture

mon_fichier = open ( ’ Monfichier . txt ’ , ’r ’)

• L’option ’r’ permet d’ouvrir le fichier en mode lecture (read)


• S’il n’existe pas de fichier de ce nom, une exception est levée :
FileNotFoundError

>>> ofi = open ( " fichier . txt " , " r " )


Traceback ( most recent call last ):
File " < stdin > " , line 1 , in < module >
F i l e N o tF o u n d E r r o r : [ Errno 2] No such file or directory : ’ fichier . t

20
Exception à l’ouverture d’un fichier inexistant

filename = input ( " Veuillez entrer un nom de fichier : " )


try :
f = open ( filename , " r " )
except :
print ( " Le fichier " , filename , " est introuvable " )
else :
< Instructions à effectuer sur le fichier >
f . close ()

21
Lecture séquentielle d’un fichier

>>> ofi = open ( " table7 . txt " , " r " )

22
Lecture séquentielle d’un fichier

>>> ofi = open ( " table7 . txt " , " r " )


>>> texte = ofi . read ()

22
Lecture séquentielle d’un fichier

>>> ofi = open ( " table7 . txt " , " r " )


>>> texte = ofi . read ()
>>> ofi . close ()

22
Lecture séquentielle d’un fichier

>>> ofi = open ( " table7 . txt " , " r " )


>>> texte = ofi . read ()
>>> ofi . close ()
>>> texte
’ 1*7=7\ n2 *7=14\ n3 *7=21\ n4 *7=28\ n5 *7=35\ n6 *7=42\ n7 *7=49\ n
8*7=56\ n9 *7=63\ n10 *7=70\ n ’

22
Lecture séquentielle d’un fichier

>>> ofi = open ( " table7 . txt " , " r " )


>>> texte = ofi . read ()
>>> ofi . close ()
>>> texte
’ 1*7=7\ n2 *7=14\ n3 *7=21\ n4 *7=28\ n5 *7=35\ n6 *7=42\ n7 *7=49\ n
8*7=56\ n9 *7=63\ n10 *7=70\ n ’
>>> print ( texte )
1*7=7
2*7=14
3*7=21
4*7=28
5*7=35
6*7=42
7*7=49
8*7=56
9*7=63
10*7=70

22
Lecture séquentielle d’un fichier

>>> ofi = open ( " table7 . txt " , " r " )


>>> texte = ofi . read ()
>>> ofi . close ()
>>> texte
’ 1*7=7\ n2 *7=14\ n3 *7=21\ n4 *7=28\ n5 *7=35\ n6 *7=42\ n7 *7=49\ n
8*7=56\ n9 *7=63\ n10 *7=70\ n ’
>>> print ( texte )
1*7=7
2*7=14
3*7=21
4*7=28
5*7=35
6*7=42
7*7=49
8*7=56
9*7=63
10*7=70

22
Lecture séquentielle d’un fichier

• La méthode read() lit la totalité du fichier dans une seule chaı̂ne


de caractères

23
Lecture séquentielle d’un fichier

• La méthode read() lit la totalité du fichier dans une seule chaı̂ne


de caractères
• Cette méthode peut également être utilisée avec un argument qui
indique le nombre de caractères qui doivent être lus, à partir de la
position déjà atteinte dans le fichier

23
Lecture séquentielle d’un fichier

• La méthode read() lit la totalité du fichier dans une seule chaı̂ne


de caractères
• Cette méthode peut également être utilisée avec un argument qui
indique le nombre de caractères qui doivent être lus, à partir de la
position déjà atteinte dans le fichier

>>> ofi = open ( " table7 . txt " , " r " )


>>> texte = ofi . read (5)

23
Lecture séquentielle d’un fichier

• La méthode read() lit la totalité du fichier dans une seule chaı̂ne


de caractères
• Cette méthode peut également être utilisée avec un argument qui
indique le nombre de caractères qui doivent être lus, à partir de la
position déjà atteinte dans le fichier

>>> ofi = open ( " table7 . txt " , " r " )


>>> texte = ofi . read (5)
>>> print ( texte )
1*7=7

23
Lecture séquentielle d’un fichier

• La méthode read() lit la totalité du fichier dans une seule chaı̂ne


de caractères
• Cette méthode peut également être utilisée avec un argument qui
indique le nombre de caractères qui doivent être lus, à partir de la
position déjà atteinte dans le fichier

>>> ofi = open ( " table7 . txt " , " r " )


>>> texte = ofi . read (5)
>>> print ( texte )
1*7=7
>>> texte = ofi . read (5)
>>> print ( texte )

2*7=

23
Lecture séquentielle d’un fichier

• La méthode read() lit la totalité du fichier dans une seule chaı̂ne


de caractères
• Cette méthode peut également être utilisée avec un argument qui
indique le nombre de caractères qui doivent être lus, à partir de la
position déjà atteinte dans le fichier

>>> ofi = open ( " table7 . txt " , " r " )


>>> texte = ofi . read (5)
>>> print ( texte )
1*7=7
>>> texte = ofi . read (5)
>>> print ( texte )

2*7=
# Attention , impression du caract è re \n , qui compte pour 1!

23
Lecture séquentielle d’un fichier

• La méthode read() lit la totalité du fichier dans une seule chaı̂ne


de caractères
• Cette méthode peut également être utilisée avec un argument qui
indique le nombre de caractères qui doivent être lus, à partir de la
position déjà atteinte dans le fichier

>>> ofi = open ( " table7 . txt " , " r " )


>>> texte = ofi . read (5)
>>> print ( texte )
1*7=7
>>> texte = ofi . read (5)
>>> print ( texte )

2*7=
# Attention , impression du caract è re \n , qui compte pour 1!
>>> ofi . close ()

23
Méthode readline()

• La méthode readline() permet de lire le fichier ligne à ligne

24
Méthode readline()

• La méthode readline() permet de lire le fichier ligne à ligne

def a f fi c he r _f ic h ie r ( nom ) :
""" Str --> None -- Affiche le contenu du fichier nom """

ofi = open ( nom , ’r ’) # Ouvrir le fichier


# Lecture de la premi è re ligne du fichier
ligne = ofi . readline ()

# Tant que le fichier n ’ est pas vide


while ligne != " " :
print ( ligne , end = " " )
ligne = ofi . readline ()

ofi . close () # Fermeture du fichier

24
Méthode readline()

>>> a ffic h er _ fi c hi e r ( " table7 . txt " )


1*7=7
2*7=14
3*7=21
4*7=28
5*7=35
6*7=42
7*7=49
8*7=56
9*7=63
10*7=70

25
Pour conclure
Résumé du cours

Aujourd’hui, on a vu :

• Comment gérer les exceptions avec l’instruction try ... except


• Comment manipuler un fichier textuel, en lecture et écriture

26

Vous aimerez peut-être aussi