La gestion des objets complexes en Python devient un défi lorsque vous devez les stocker ou les transférer entre systèmes ou applications.
Sans une solution fiable, ces opérations peuvent entraîner des erreurs et compromettre l’intégrité des données, créant des frustrations pour les développeurs.
Utiliser le module pickle
pour sérialiser et désérialiser vos objets en toute simplicité. Ce processus garantit un stockage et un transfert sécurisé des objets Python, tout en préservant leur structure. Apprenez comment dans cet article.
Sérialisation et désérialisation en Python
Définition de la sérialisation et désérialisation
La sérialisation est le processus qui permet de convertir un objet Python en un fichier binaire. Ce dernier est un type de fichier qui n’est pas directement lisible par un humain. Le processus inverse, appelé désérialisation, consiste à reconvertir le contenu d’un fichier binaire en un objet Python, restituant ainsi sa structure d’origine.
Avantages de la sérialisation en Python
La sérialisation offre plusieurs avantages majeurs dans la gestion des objets Python, notamment :
- Stockage et transfert de données : La sérialisation permet de stocker des objets Python sur des disques durs ou de les transférer via des réseaux. Cela est particulièrement utile pour la sauvegarde de données complexes ou le partage d’informations entre différentes applications.
- Interopérabilité : Elle facilite la communication entre différents systèmes ou langages de programmation. Un objet sérialisé peut être désérialisé et utilisé dans un autre environnement tout en conservant sa structure d’origine, ce qui accroît la flexibilité.
- Sécurité : La sérialisation permet également de sécuriser les objets avant leur transmission. En contrôlant les processus de sérialisation et de désérialisation, il est possible de prévenir certaines attaques comme l’injection de code.
- Copie d’objets : En sérialisant un objet, puis en le désérialisant, il est possible de créer des copies exactes des objets en mémoire, sans nécessiter de méthodes complexes de clonage. Cela permet de dupliquer des objets tout en maintenant leur intégrité.
Utiliser le module pickle pour la sérialisation
Le module pickle est un module natif de Python dédié à la sérialisation. Il permet de stocker des objets Python de manière persistante sur des disques ou de les transmettre sur des réseaux tout en conservant leur intégrité et leurs types de données.
Exploitez la persistance des données en python
Sérialisation en Python
Sérialisation d'objets en Python
Pour sérialiser des objets en Python, nous commençons par importer le module pickle avec la syntaxe suivante :
import pickle
Ensuite, nous créons un objet, par exemple un dictionnaire Python, que nous allons sérialiser :
objet = {'nom': 'Jean', 'age': 30, 'ville': 'Paris'}
Pour sérialiser cet objet et l’enregistrer dans un fichier binaire, nous employons la fonction dump du module pickle, qui est conçue pour convertir un objet Python en une séquence d’octets stockée dans un fichier. La documentation officielle de cette fonction est illustrée ci-dessous :
with open('objet.pickle', 'wb') as fichier:
pickle.dump(objet, fichier)
Lors de l’exécution de ce code, voici le contenu sérialisé est écrit dans le fichier spécifié :
Sérialisation d'objets complexes avec Python
Dans l’exemple précédent, nous avons sérialisé un simple dictionnaire Python. Ce qui est encore plus intéressant, c’est que nous pouvons également travailler avec des classes Python. Par exemple, voici comment sérialiser une liste d’objets créés à partir d’une classe personnalisée :
class Personne:
def __init__(self, nom, age):
self.nom = nom
self.age = age
import pickle
# Création d'une liste de personnes
lst_personnes = [
Personne("John Doe", 45),
Personne("Jane Doe", 33)
]
Voici comment sérialiser cette liste d’objets et la sauvegarder dans un fichier binaire :
with open('personnes.pickle', 'wb') as fichier:
pickle.dump(lst_personnes, fichier)
Ce code ouvre le fichier personnes.pickle en mode binaire et y enregistre la liste lst_personnes de manière sérialisée. Voici le contenu du fichier personnes.pickle:
Désérialisation d'objets en Python
Après avoir vu comment sérialiser des objets, nous allons maintenant nous intéresser à la désérialisation. La désérialisation permet de récupérer toutes les données précédemment sérialisées, afin de les réutiliser dans leur état d’origine.
Étapes de la désérialisation en Python
- Importer le module pickle
Tout d’abord, nous devons importer le module pickle, qui sera utilisé pour désérialiser les objets. Voici la syntaxe correspondante :
import pickle
- Ouvrir le fichier en mode lecture binaireEnsuite, nous ouvrons le fichier contenant les données sérialisées en mode lecture binaire (rb). Cela permet d’accéder au contenu sous forme binaire, qui sera reconverti en objets Python.
with open('personnes.pickle', 'rb') as fichier:
objet_deserialise = pickle.load(fichier)
Dans cet exemple, le fichier personnes.pickle contient une liste d’objets sérialisés. La fonction pickle.load(fichier) permet de désérialiser le contenu du fichier et de le stocker dans la variable objet_deserialise.
- Parcourir les objets désérialisésUne fois les objets désérialisés, vous pouvez les parcourir et accéder à leurs attributs comme dans le cas des objets ordinaires en Python. Par exemple, avec une boucle for, nous pouvons itérer sur chaque objet désérialisé et afficher ses attributs :
for personne in objet_deserialise:
print(f"Nom: {personne.nom}, Âge: {personne.age}")
Ce code va parcourir la liste d’objets et afficher pour chaque objet Personne son nom et son âge. En exécutant ce code, voici un exemple de ce qui pourrait être affiché dans le terminal Python :
Ainsi, nous avons récupéré les objets avec toutes leurs propriétés d’origine, telles qu’elles étaient au moment de la sérialisation.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui. Découvrez des cours variés pour tous les niveaux !
Conclusion
En conclusion, la sérialisation en Python est un processus essentiel pour le stockage et le transfert des données complexes. Grâce au module Pickle, il est facile de sérialiser et désérialiser des objets tout en assurant leur intégrité.
Cela permet une meilleure interopérabilité entre systèmes et une sécurité accrue lors des transmissions. Maîtriser ces techniques optimise la gestion des données dans vos projets Python.