Python

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 33

Introduction à la Programmation Python

Mme. Amal Gassara

Institut Supérieur d’Informatique de Mahdia

Année universitaire: 2022/2023


Chapitre 4:

Persistance des données


Gestion des exceptions

 Définition d’une exception


 Une exception est un objet qui indique que le programme ne peut pas
continuer son exécution.
 Exemple: Ci-dessous le code de la fonction division

def division(x,y):
resultat=x/y
print (resultat)
print("Division terminée")
division(1,0)

 Lorsque x == 0, le programme effectue une division par zéro. Alors, il


s’arrête et déclenche une erreur.
 L’instruction print("Division terminée") n’était pas exécutée

3
Gestion des exceptions

 Principe des exceptions


 La gestion des exceptions est un concept très utilisé dans d'autres langages de
programmation (orientés objet) comme Java, PHP , etc
 Le mécanisme des exceptions permet au programme de « rattraper » les
erreurs, de détecter qu’une erreur s’est produite et d’agir en conséquence afin
que le programme ne s’arrête pas.

 Afin de rattraper l’erreur, on place le code qui peut générer une erreur
éventuelle dans le bloc try et on prévoie un traitement alternatif dans le
bloc except.

4
Gestion des exceptions

 Syntaxe:
try: #La clause try
<instructions_ susceptible_de_produire_une_erreur>
except <type_exception> : #La clause except
<instruction_à_exécuter_si_une_exception_se_déclenche>

 La clause try est exécutée au début.


 Si le bloc try ne génère aucune erreur, alors le bloc except sera ignoré.
 Sinon, le bloc except sera exécuté pour rattraper l'erreur du bloc try. Le reste
de ce dernier (le bloc try) est ignoré.
 Si le type d'exception levée correspond à un nom indiqué après l’instruction
except, la clause except correspondante est exécutée. Puis l'exécution du
programme continue après l'instruction try.

5
Gestion des exceptions

 Alors, on va modifier le code de la fonction division de manière qu’elle


rattrape l’erreur comme suit :

def division(x,y):
try:#La clause de try
resultat=x/y
print (resultat)
print("On est dans le bloc try")
except ZeroDivisionError:#La clause except
print ("Attention division par zero!")
print("Division terminée")

division(1,0)

6
Gestion des exceptions

 Exemple 2

>>> def division(x,y):


try:
return (x/y)
except TypeError:
print("Attention type de variable erroné")

>>> division(1,"2")
Attention type de variable erroné
>>> division(1,0)
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
division(1,0)
File "<pyshell#24>", line 3, in division
return x/y
ZeroDivisionError: division by zero

 Si le type de l’exception déclenchée ne correspond à aucune exception


mentionnée dans la clause except, l'exécution s'arrête avec un message.
7
Gestion des exceptions

 Exemple 3
 On peut la corriger de cette manière:
>>> def division(x,y):
try:
return (x/y)
except ZeroDivisionError:
print("Attention division par zero!")
except TypeError:
print("Attention type de variable erroné")
except Exception:
print("Attention une erreur s’est produite")

>>> division(1,0)
Attention division par zero
>>> division(1,"2")
Attention type de variable erroné
>>> division(1,0,3)
Attention une erreur s’est produite
8
Gestion des exceptions

 Une liste des exceptions natives et leur signification se trouve dans le lien
suivant:
https://docs.python.org/fr/3/library/exceptions.html#bltin-exceptions
Exemples:
 TypeError
 NameError
 SyntaxError

9
Gestion des exceptions

 Finally
 On utilise le mot clé finally pour exécuter des instructions quelque soit
les erreurs générées ou non (et même si il y a présence d'un return ).
Dans tous les cas les instructions placées dans finally seront executées.

10
Gestion des exceptions

 Exemple:

11
Gestion de la base
des données
Introduction

 Deux modes de stockage des données sont envisageables :


 Des fichiers

 Une base de données

  Le mode de stockage dans des fichiers est très simple à mettre en


œuvre.

  Si les informations à traiter atteignent un certain volume, l'usage d'une


base de données est fortement recommandé.
Gestion de la base des données

 Qu’est ce qu’une base de données


 Une base de données est un conteneur dans lequel il est possible de stocker des
données de façon structurée.

 Un langage standardisé -SQL- est dédié à cette structure et permet aussi bien
de faire des recherches mais aussi des modifications ou des suppressions.

 Les logiciels de gestion de bases de données les plus utilisées aujourd'hui sont
des SGBDR - Système de gestion de base de données relationnelles –

 Exemples: MySQL, PostgreSQL, MariaDB, SQLite, Oracle

14
SQLite

Utiliser le module SQLite


 Instructions de base sous python
 Pour importer le module SQLite:
import sqlite3 as sq

 Pour créer et se connecter à une base de données avec SQLite:


con = sq.connect('ma_base.db')
 Les bases créées avec sqlite3 sont enregistrées sous forme de fichier .db. Ce
fichier s’ouvre en créant un objet de type Connection.
 Pour exécuter des commandes:

cursor = con.cursor()
requete= ("SELECT * FROM Vente")
cursor.execute(requete)

15
SQLite

 Un curseur est ensuite crée à partir de l’objet con de la classe Connection. Ce


curseur représente un canal entre la base de données et le script Python.
 Pour exécuter des commandes dans la base, on crée des requetés sql sous
forme de chaines de caractères. Ensuite, on les exécute avec la fonction
execute()
 Lorsque le travail prévu est terminé, il est nécessaire d’enregistrer les
modifications faites sur la base avec la méthode commit()

 Pour fermer la connexion:

con.close()

Enfin, il faut fermer la connexion vers la base

16
SQLite

 Créer une table avec SQLite


 Voici un exemple de création de table:
cursor = con.cursor()
cursor.execute(""" CREATE TABLE users(
id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT,
age INTERGER)""")
con.commit()

 Supprimer une table avec SQLite:

cursor = con.cursor()
cursor.execute("DROP TABLE users")
con.commit()

17
SQLite

 Insérer des données


Il existe plusieurs manière d'insérer des données,
 La plus simple étant celle-ci:

cursor.execute("INSERT INTO users (name, age) VALUES ("olivier", 30) ")


con.commit()

 Ou encore:
X=“Olivier”
Y=“30
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?) ", (x,y) )
con.commit()

 En passant par un dictionnaire

data = {"nom" : "olivier", "age" : 30}


cursor.execute("INSERT INTO users(name, age) VALUES(:nom, :age)", data)
con.commit()
18
SQLite

 Il est également possible de faire plusieurs insert en une seule fois avec la
fonction executemany :

users = [("olivier", 30), ("jean-louis", 90)]


cursor.executemany("INSERT INTO users(name, age) VALUES(?, ?)", users)

19
SQLite

 Récupérer des données


 La requête SELECT demande l’extraction d’un ensemble particulier
d’enregistrement, qui devront être transférés de la base de données au curseur.
 On peut récupérer la première ligne correspondant à une recherche à l'aide de
la fonction fetchone()

cursor.execute("SELECT * FROM users") Le résultat est un tuple:


user1 = cursor.fetchone() (1, 'olivier', 30)
print(user1)

 On peut récupérer plusieurs données de la même recherche en utilisant la


fonction fetchall()
 1ère méthode

cursor.execute("SELECT id, name, age FROM users") Le résultat est une liste de tuples:
rows = cursor.fetchall() (1, 'olivier', 30)
for row in rows: (2, ' jean-louis ', 90)
print(row)
20
SQLite

 2ème méthode
 L'objet curseur fonctionne comme un itérateur, invoquant la méthode
fetchall() automatiquement:
cursor.execute("SELECT id, name, age FROM users")
for row in cursor:
print(row)

 Pour la recherche spécifique, on utilise la même logique vu précédemment:

id = 2
cursor.execute("SELECT id, name FROM users WHERE id=?", (id, ))
response = cursor.fetchone()

 Modifier des entrées


 Pour modifier des entrées:
cursor.execute("UPDATE users SET age = ? WHERE id = 2", (31, ))
con.commit()
21
SQLite

 Gestion des exceptions


 Il est recommandé de toujours encadrer les opérations sur des bases de
données et d'anticiper des erreurs:
import sqlite3
try:
conn = sqlite3.connect('data/users.db')
cursor = conn.cursor()
cursor.execute("""CREATE TABLE users
( id INTEGER PRIMARY KEY AUTOINCREMENT , name TEXT, age INTERGER)""")
conn.commit()
except sqlite3.OperationalError:
print("Erreur la base n’existe pas")
except sqlite3.Error as e:
print("Erreur")
finally:
conn.close()
Les fichiers
Les fichiers

Un fichier est un ensemble de données numériques réunies sous un même nom,


enregistrées sur un support de stockage permanent (un disque dur, un CD-
ROM,…)
 Les fichiers textes
 Un fichier texte est un fichier où l’information est stockée sous forme de
caractères lisibles par un éditeur de texte (principalement des lettres et des
chiffres)
 Les fichiers « .txt »: Un fichier texte qui contient des caractères organisés en
lignes successives. Ces lignes étant séparées les unes des autres par un
caractère spécial non-imprimable appelé « marqueur de fin de ligne
 Les fichiers « .csv » : un fichier texte représentant des données tabulaires
sous forme de valeurs séparées par des virgules (ou ‘\t’). Chaque ligne du
texte correspond à une ligne du tableau et les virgules correspondent aux
séparations entre les colonnes
 Il est très facile de traiter ce genre de fichiers sous Python.
Les fichiers

 Ouverture d’un fichier texte


 La fonction open() permet d’ouvrir un fichier.
 Elle prend en paramètres :
 le chemin du fichier (relatif ou absolu)
 Un chemin relatif est un chemin qui prend en compte l'emplacement
de lecture.
 Un chemin absolu est un chemin complet qui peut être lu quelque soit
l'emplacement de lecture.

 mode d’accès:
 "r": ouverture en mode read, le fichier doit exister, sinon un message
d’erreur est retourné;
 "w": ouverture en mode write, si le fichier existe, il l’ouvre, écrase le
contenu et positionne le curseur au début, sinon le fichier sera créé ;
 "a": ouverture en mode append, le contenu du fichier ne sera pas
écrasé et le nouveau contenu s’ajoute dans le fichier s’il existe, sinon il
sera créé ;
Les fichiers

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


>>> print (fichier)
<open file 'data.txt', mode 'r' at 0x7ff6cf3fe4b0>

 La fonction open() renvoie un «objet-fichier» de type file

 Fermeture d’un fichier texte


 Comme tout élément ouvert, il faut le refermer une fois les instructions
terminées. Pour cela on utilise la méthode close()

>>> fichier.close()
Les fichiers

 Lecture d’un fichier texte

Méthodes Description
read() Lire le contenu du fichier texte ouvert et renvoie une
chaîne de caractères unique. Il est possible de lire :

readline() Lire une seule ligne du fichier ouvert et la renvoie sous


forme d'une chaîne de caractères.
readlines() Retourner une liste contenant toutes les lignes du
fichier texte ouvert.
Les fichiers

1. La méthode read()
 Exemple:

>>> fr=open('zoo.txt','r') # ouvrir le fichier en lecture


>>> contenu=fr.read() #Après, le curseur est placé à la fin du texte
>>> contenu
poisson
abeille
chat
chien
Oiseau
mouton
>>> ch=fr.read() #Un autre appel à fr.read()renvoie la chaîne vide
>>> ch
''
>>> fr.close()
Les fichiers

2. La méthode readline()
 Elle renvoie une chaîne correspondante à la ligne courante et passe le curseur,
initialement placé au début du fichier, dans la ligne suivante.
>>> fr=open('zoo.txt','r')
>>> ligne=fr.readline()
>>> while ligne !="":
print(ligne)
ligne=fr.readline()
>>> fr.close()

3. La méthode readlines() : Elle récupère toutes les lignes d’un fichier dans une
liste
>>> fr=open('zoo.txt','r')
>>> contenu=fr.readlines()
>>> contenu
['poisson\n','abeille\n','chat\n','chien\n','oiseau\n','mouton\n']
>>> for ligne in contenu :
print(ligne)
>>> fr.close()
Les fichiers

 Ecriture dans un fichier texte


1. La méthode write()

• La méthode write() permet d’écrire des données dans le fichier.


— Les données sont de type chaîne de caractères.
— Les données sont enregistrées dans le fichier les unes à la suite des autres
(séquentiel) sans espaces ni saut de lignes.
 Il faut ajouter le séparateur "\n" afin d’ajouter le retour à la ligne ou le
séparateur "\t" qui permet d’insérer une espace de tabulation
Les fichiers

 Exemple1:

>>> # créer un nouveau fichier


>>> fich1 = open('zoo.txt', 'w')
>>> # y écrire un texte
>>> animaux = ['poisson','abeille','chat']
>>> for i in animaux:
fich1.write(i+'\n')
>>> # le fermer pour valider son contenu
>>> fich1.close()

 Exemple2:

>>> # ouvrir un fichier existant et le modifier


>>> fich2 = open('zoo.txt', 'a')
>>> # y ajouter un texte puis le fermer
>>> fich2.write("chien \n")
>>> fich2.close()
Les fichiers

 Ecriture dans un fichier texte


2. La méthode writelines()
• La méthode writelines() permet d’écrire le contenu d’une liste dans un fichier
texte.

>>> animaux2=['oiseau\n','mouton\n']
>>> fich3=open('zoo.txt','a')
>>> fich3.writelines(animaux2)
>>> fich3.close()
Les fichiers

 Gestion des exceptions


 Dans l'exemple suivant, nous ouvrirons manuellement un fichier et le
fermerons manuellement une fois que nous en aurons lu le contenu.

f = open('filename', 'w')
try:
# traitement sur le fichier
f.write('Bonjour')
finally:
f.close()

 On a utilisé le bloc try et finally, pour s’assurer de fermer le fichier même si


une exception est parvenue lors du traitement sur le fichier.
 Si on fait cette opération d’écriture dans le fichier souvent, alors il serait très
utile que l'utilisateur dispose d'un mécanisme pour le faire automatiquement.

Vous aimerez peut-être aussi

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy