Gestion des fichiers
& Gestion des Exceptions en
Python
Présenté par :
ANEDDAME Ridwane
RIDOUANE Othman
ASSANNAM M’bark
• Plan :
I.Gestion des fichiers
1.Présentation
2.Ouvrir un fichier
3.Lire un fichier
4.Ecrire dans un fichier
5.Chemins des fichiers
6.Actions sur des fichiers et répertoires
II. Gestion des exceptions
1.Introduction
2.Types des Exceptions
3.Création des Exceptions personnalisées
2
4.Exemples
I.Gestion des fichiers
1.Présentation :
•Nous avons vu jusqu’au l’instant (dans les exposés passés), que pour stocker les
données en python, nous utilisons des variables (comme int, string, ….) ou des
structures de données (chaines, listes, dictionnaires,…),
•Ce type de stockage, malgré qu’il est très pratique car il nous permet de manipuler
nos données très facilement il n’est pas toujours le meilleur outil pour stocker des
données. car, ces données sont perdues à la fin du programme (volatiles).
• Nous avons donc besoin d’une autre manière complémentaire, qui va nous
permettre de stocker les données d’une manière permanente, parmi les manières
utilisées pour cet’ objectif, utilisation de fichiers
I.Gestion des fichiers
1.Présentation :
c’est quoi un fichier ?
• Un fichier fait référence à une partie de la mémoire (non volatile) qui
représente une information.
• Cette partie de mémoire peut prendre différentes formes : un document
texte, une image, du son, une vidéo, un exécutable…,
• A la fin du compte , cette information est stockée de la même manière : une
séquence de bits (0 ou 1) qu'il faut interpréter par la machine pour obtenir
l'information compréhensible par un utilisateur humain.
I.Gestion des fichiers
1.Présentation :
Différentes types de fichiers:
• On distingue couramment deux types de fichiers, qui seront manipulés à
des niveaux différents :
un fichier texte est constitué d'une séquence de caractères,
permettant de stocker une chaine de caractères sur disque.
un fichier binaire est constitué d'une séquence de bits, organisés en
paquets de huit, appelés octets. (ex: les fichiers ,png, jpg, fichiers vidéo)
5
I.Gestion des fichiers
2. Ouverture d’un fichier :
la fonction open() :
• Elle permet de récupérer un descripteur qui va nous permettre de réaliser les
opérations de lecture et/ou d’écriture dans le fichier
Syntaxe :
open("fichier.txt ")
• A la fin du traitement d’un fichier, il faut fermer le descripteur du fichier avec la
méthode close()
Syntaxe :
f = open("fichier.txt")
# faire des opérations sur le contenu du fichier
f.close()
• La non fermeture du descripteur de fichier cause une fuite de ressources (resource
leak).
6
I.Gestion des fichiers
2. Ouverture d’un fichier
la fonction open() avec la syntaxe with :
•Parce qu'on oublie souvent de fermer le descripteur avec la méthode close(),
python nous offre une syntaxe spéciale pour éviter la fuite de ressources :
with open("fichier.txt") as f:
# faire des opérations sur le contenu du fichier
pass
• La syntaxe with appelle automatiquement la méthode close() du descripteur de
fichier à la sortie du bloc (même si la sortie du bloc est due à une erreur).
7
I.Gestion des fichiers
2. Ouverture d’un fichier
Modes d’ouvertures de fichiers :
• Lorsqu’on ouvre un fichier, il faut préciser le mode d’ouverture qui dépend
du type du fichier et des opérations que l’on souhaite réaliser.
• Le mode est représenté par une chaîne de caractères qui est passée à la
fonction open() avec le paramètre mode.
Syntaxe :
open(" fichier.txt", mode="w")
• Si aucun mode n’est spécifié, le fichier s’ouvre avec le mode par défaut ‘r’,
(mode en lecture)
8
I.Gestion des fichiers
2. Ouverture d’un fichier
Modes d’ouvertures de fichiers :
Mode Description
r ouverture en lecture (mode par défaut)
w ouverture en écriture (efface le contenu précédent)
ouverture uniquement pour création (l’ouverture échoue si le
x
fichier existe déjà)
+ ouverture en lecture et écriture
a ouverture en écriture pour ajout en fin de fichier
b fichier binaire
t fichier texte (mode par défaut)
9
I.Gestion des fichiers
2. Ouverture d’un fichier
Modes d’ouvertures de fichiers :
Exemples :
1- ouvrir un fichier en écriture:
with open("fichier.txt", mode="w") as f:
#instructions …..
2 -Ouvrir un fichier binaire en création:
with open("fichier.bin", mode="xb") as f:
#instructions …..
3-ouverir un fichier texte en lecture (mode par défaut) :
with open("fichier.txt", mode= "rt") as f:
#instructions …..
équivalent à
with open("fichier.txt") as f: 10
I.Gestion des fichiers
2. Ouverture d’un fichier
Modes d’ouvertures de fichiers :
Exemples :
4- Le mode r+ permet d’ouvrir un fichier à la fois en lecture et en écriture.
Le pointeur de fichier est placé au point de départ du fichier
with open("fichier.txt", mode="r+") as f:
#instructions …..
5 -Le mode w+ ouvre le fichier en lecture et en écriture.
Si le fichier existe déjà, il est tronqué, S’il n’existe pas un nouveau fichier est créé .
Le pointeur de fichier est placé au point de départ du fichier.
with open("fichier.txt", mode= "w+") as f:
#instructions …..
11
I.Gestion des fichiers
3. Lire le contenu d’un fichier
Obtenir le contenu du fichier dans une chaîne de caractères:
•Syntaxe:
with open("fichier.txt") as f:
contenu = f.read()
print(contenu)
Résultat :
ligne1_Mot1 ligne1_Mot2 ligne1_Mot3 ligne1_Mot4
ligne3_Mot1 ligne3_Mot2 ligne3_Mot3 ligne3_Mot4
ligne4_Mot1 ligne4_Mot2 ligne4_Mot3 ligne4_Mot4
ligne5_Mot1 ligne5_Mot2 ligne5_Mot3 ligne5_Mot4
12
I.Gestion des fichiers
3. Lire le contenu d’un fichier
Obtenir le contenu du fichier sous la forme d’une liste de chaînes de
caractères (un élément par ligne) :
•syntaxe:
with open("fichier.txt") as f:
lignes = f.readlines()
print("Nbr de lignes dans le fichier :" ,len(lignes))
print ("-------------------------------------")
print("la 1ere ligne :\n",lignes[0])
Résultat :
Nbr de lignes dans le fichier : 5
-------------------------------------
la 1ere ligne :
ligne1_Mot1 ligne1_Mot2 ligne1_Mot3 ligne1_Mot4
13
I.Gestion des fichiers
3. Lire le contenu d’un fichier
Lire un fichier csv:
•Les fichiers CSV (Comma Separated Values) sont un format de données
couramment utilisé pour l'importation et l'exportation de grandes bases de
données.
•Grâce à son module csv , Python nous offre des outils puissants et
flexibles pour travailler avec ces fichiers;
Syntaxe :
import csv
with open(‘fichier.csv', 'r') as file:
reader = csv.reader(file, delimiter=';')
for row in reader:
print(row) 14
I.Gestion des fichiers
3. Lire le contenu d’un fichier
Ecrire dans un fichier csv:
Syntaxe :
import csv
with open('fichier.csv', 'w') as file:
writer = csv.writer(file, delimiter=';')
writer.writerow(["nom", "age"])
writer.writerows([[“Ahmed", 23], [“KARIM", 27]])
•csv.writer(file, delimiter=';') : Crée un objet writer qui peut écrire des lignes
dans le fichier CSV
•writer.writerow() : Écrit une seule ligne contenant les en-têtes de colonne dans le
fichier CSV
•writer.writerows(): Écrit plusieurs lignes dans le fichier CSV
15
I.Gestion des fichiers
3. Lire le contenu d’un fichier
Lire un fichier zip
•Les fichiers zip sont très répandus de nos jours et constituent un standard de
compression facile d’accès quelque soit l’ordinateur et son système d’exploitation.
•Le langage python propose quelques fonctions pour
compresser et décompresser ces fichiers
par l’intermédiaire du module zipfile
16
I.Gestion des fichiers
4. Ecrire dans un fichier :
La méthode write():
•Pour écrire du texte dans un fichier, on utilise la méthode write():
with open("fichier.txt", mode="a") as f:
f.write("\ntexte ajouté avec la méthode write")
with open("fichier.txt", mode="r") as f:
contenu =f.read()
print(contenu)
Résultat :
ligne1_Mot1 ligne1_Mot2 ligne1_Mot3 ligne1_Mot4
ligne3_Mot1 ligne3_Mot2 ligne3_Mot3 ligne3_Mot4
ligne4_Mot1 ligne4_Mot2 ligne4_Mot3 ligne4_Mot4
ligne5_Mot1 ligne5_Mot2 ligne5_Mot3 ligne5_Mot4
texte ajouté avec la méthode write
17
I.Gestion des fichiers
4. Ecrire dans un fichier :
La méthode writelines():
•Pour écrire une liste de lignes dans un fichier, on utilise la méthode
writelines():
18
I.Gestion des fichiers
4. Ecrire dans un fichier :
Ecrire dans un fichier zip:
•Pour créer un fichier zip, le procédé ressemble à la création de n’importe quel
fichier. La seule différence provient du fait qu’il est possible de stocker le fichier à
compresser sous un autre nom à l’intérieur du fichier zip, ce qui explique les deux
premiers arguments de la méthode write. Le troisième paramètre indique si le fichier
doit être compressé ZIP_DEFLATED ou non ZIP_STORED( archivé mais non compressé).
19
I.Gestion des fichiers
5. Chemin d’un fichier:
• Les fichiers sont organisés selon une structure arborescente dans laquelle un nœud peut
être soit un fichier soit un répertoire;
• La manière d’écriture du chemin d’un fichier est différente en passant d’un SE à un autre,
• Dans la représentation des chemins de fichiers, MS-Windows utilise le caractère \ pour
séparer les composants d’un chemin tandis que les systèmes *nix et MacOs utilisent le
caractère /
exemple d’un chemin de fichier en windows :
C:\\Users\user\documents\fichier.txt
exemple d’un chemin de fichier en lunix
/home/user/documents/fichier.txt
20
I.Gestion des fichiers
5. Chemin d’un fichier:
Le module os.path :
•Le module os.path fournit des fonctions élémentaires pour nous aider à gérer les
chemins de fichiers :
la fonction abspath() retourne le chemin absolu d’un fichier , Exemple :
import os.path as path
chemin = path.abspath("fichier,txt")
print(chemin)
# Si le répertoire de travail est /home/user/Documents
# affiche /home/user/Documents/fichier.txt
21
I.Gestion des fichiers
5. Chemin d’un fichier:
Le module os.path :
•La fonction join() crée un chemin en utilisant le séparateur approprié pour le
système , Exemple :
import os.path as path
chemin = path.join("fichiers", "fichier.txt")
print(chemin)
# Sous Windows affiche fichiers\fichier.txt
# Sous *nix ou MacOS, affiche fichiers/fichier.txt
22
I.Gestion des fichiers
5. Chemin d’un fichier
Connaître le répertoire du travail:
• Le répertoire du travail correspond au répertoire courant au moment du
lancement de l’interpréteur Python;
• Pour récupérer le répertoire courant, on utilise la méthode getcwd() du
module os;
Syntaxe : import os
os.getcwd()
• On Peut aussi utiliser la méthode cwd() du Module pathlib
Syntaxe : import pathlib
pathlib.Path.cwd()
23
I.Gestion des fichiers
6. Actions sur fichier
Copier un fichier ou un répertoire:
• Pour copier un fichier on utilise la méthode copy() du module shutil
Syntaxe :
import shutil
shutil.copy(source, destination)
• On peut aussi utiliser la méthode copytree() pour copier tout un répertoire
Syntaxe :
import shutil
shutil.copytree(repertoireSource, repertoireDestination)
24
I.Gestion des fichiers
6. Actions sur fichier
Déplacer un fichier ou un répertoire:
• Pour déplacer un fichier ou un répertoire on utilise la méthode move() du
module shutil
Syntaxe :
import shutil
shutil.move(source, destination)
25
I.Gestion des fichiers
6. Actions sur fichier
Supprimer un fichier ou un répertoire:
• Pour supprimer un fichier , on utilise la méthode remove() du module os
• Pour supprimer un dossier, on utilise la méthode rmtree() du module shutil ;
• On peut aussi utiliser la méthode rmdir() du Modules os & pathlib (le dossier doit
être vide, si non la méthode retourne une erreur), Voilà les syntaxes :
import shutil, os ,pathlib
os.remove(fichier) #sup fichier;
shutil.rmtree ("repertoire") # dossier vide ou non
os.rmdir("repertoire") # dossier vide seulement
p = pathlib.Path ("repertoire")
p.rmdir() # dossier vide seulement 26
I.Gestion des fichiers
6. Actions sur fichier
Rechercher des fichiers dans une arborescence:
• Pour rechercher un fichier ou des fichiers dans une arborescence , on utilise la
méthode glob() du module glob
• On peut utiliser le caractère ? pour représenter n’importe quel caractère et * pour
représenter n’importe quelle suite de caractères.
Exemple ; le code suivant affiche la liste des fichiers avec l’extention ‘txt’
dans le répertoire courant :
import glob
liste_fichiers = glob.glob("*.txt")
print (liste_fichiers)
27
I.Gestion des fichiers
6. Actions sur fichier
Lister le contenu d’un répertoire:
•La fonction listdir(repertoire) du module os.path retourne le contenu du répertoire passé
en argument sans distinction entre les fichiers et les répertoires.
•Exemple : lister le contenu de dossier courant
28
II. Gestion des Exceptions
1. Introduction
Les exceptions jouent un rôle essentiel dans la gestion des
erreurs et des comportements inattendus dans un programme
Python. Elles permettent de détecter, signaler et gérer les erreurs
de manière élégante, ce qui contribue à rendre le code plus
fiable et plus robuste. Dans cette présentation, nous allons
explorer ce qu'est une exception, pourquoi elles sont
importantes, comment les lever et les gérer, ainsi que quelques
bonnes pratiques pour travailler avec les exceptions en Python
II. Gestion des Exceptions
C’est quoi une exception ?
C’est un mécanisme de gestion des erreurs
Il est possible d'intercepter une exception et ainsi :
empêcher le programme de s'arrêter
et faire des traitements personnalisés en cas d'erreur.
Notes:
Une exception est dite levée lorsqu’une erreur apparaıt.
Une exception est dite capturée lorsqu’elle est gérée et traitée. Ce cas peut lever
d’autres exceptions
II. Gestion des Exceptions
Pourquoi une exception ?
Pour séparer :
Code métier Code de gestion des erreurs
Par défaut une exception interrompt immédiatement le programme.
Une autre solution serait d'anticiper qu'il serait possible qu'il y ait une erreur et en cas
d'erreur prévoir des instructions spécifiques.
II. Gestion des Exceptions
Pourquoi une exception ?
Code without exception handler and code with the exception handler
https://levelup.gitconnected.com/exception-handling-in-python-1d685b29129c?gi=cc17dfb9c3fc
II. Gestion des Exceptions
Exceptions ?
En cas d’erreur dans un programme, Python lève une exception.
• Il faut lire en détail les messages
erreurs!
• La cause de l’erreur y est souvent
clairement indiquée
II. Gestion des Exceptions
Éviter les exceptions
Les exceptions peuvent être dues :
A une erreur de programmation.
à un utilisateur qui rentre de mauvaises valeurs
Pour éviter que notre programme se termine:
On peut éviter les exceptions : cela peut rendre le code complexe et lourd
On peut les rattraper pour les traiter proprement
II. Gestion des Exceptions
https://docs.python.org/3/library/exceptions.html
II. Gestion des Exceptions
Python Exception Hierarchy :
II. Gestion des Exceptions
Création d’une classe d’exception personnalisée en Python
Vous pouvez créer vos propres exceptions en Python en définissant des classes
qui héritent de la classe de base Exception ou d'une de ses sous-classes, telles que
ValueError, TypeError, RuntimeError, etc. Voici comment vous pouvez créer vos
propres exceptions personnalisées :
Dans cet exemple , nous avons créé une classe
MonException qui hérite de la classe de base Exception. La
classe MonException a un constructeur __init__ qui prend
un message en argument et l'affecte à la variable d'instance
message.
L'appel à super().__init__(self.message) est utilisé pour
appeler le constructeur de la classe mère Exception avec le
message.
Lorsque vous levez l'exception MonException avec raise,
vous pouvez capturer cette exception dans un bloc except et
accéder au message associé.
Vous pouvez personnaliser davantage votre exception en
ajoutant des attributs ou des méthodes supplémentaires à la
classe, en fonction de vos besoins .
II. Gestion des Exceptions
Utilisation de plusieurs blocs except
Lors de la gestion des exceptions en Python, il est possible d'utiliser plusieurs blocs except
pour gérer différents types d'exceptions dans un même code.
Cette approche est utile lorsque vous avez des scénarios où plusieurs types d'erreurs peuvent
survenir, et vous souhaitez prendre des mesures spécifiques pour chaque type d'erreur.
Exemple 1: Gérer les erreurs de division par zéro et les erreurs de fichiers dans le même code :
Dans cet exemple, nous utilisons deux blocs except pour
gérer les exceptions ZeroDivisionError et
FileNotFoundError. Si une exception est levée, le bloc
except approprié est exécuté.
Notez que le dernier bloc except Exception as e est utilisé
pour gérer toute autre exception imprévue qui n'est pas
spécifiquement traitée. Cela permet de capturer les erreurs
inattendues.
L'utilisation de plusieurs blocs except vous permet de
personnaliser la gestion des erreurs pour différents
scénarios, ce qui rend votre code plus robuste.
II. Gestion des Exceptions
Blocs else et finally
Les blocs else et finally offrent des fonctionnalités avancées pour la gestion des exceptions en Python.
Bloc else : Il est utilisé pour exécuter un code lorsque aucune exception n'est levée dans le bloc try. Cela permet
d'isoler le code qui doit s'exécuter en cas de succès.
Bloc finally : Il est utilisé pour exécuter un code quel que soit le résultat du bloc try. C'est utile pour le nettoyage
de ressources, telles que la fermeture de fichiers.
L'utilisation de ces blocs permet un meilleur contrôle des flux d'exécution, de la gestion des erreurs et du
nettoyage des ressources, améliorant la robustesse de votre code.
II. Gestion des Exceptions
Exemple 1:
II. Gestion des Exceptions
Exemple 2:
II. Gestion des Exceptions
Exemple 3:
II. Gestion des Exceptions
Exemple 4:
II. Gestion des Exceptions
Exemple 5:
II. Gestion des Exceptions
Exemple 6:
II. Gestion des Exceptions
Exemple 7: