Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Sérialisation et Désérialisation Python : Guide Complet et Pratique
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

Sérialisation et Désérialisation Python : Guide Complet et Pratique

L'Équipe Alphorm Par L'Équipe Alphorm 18 janvier 2025
Partager
11e lecture en min
Partager
Cet article fait partie du guide Tuto Python Gratuit : Apprenez les Bases et Réalisez des Projets Pratiques, partie 23 sur 23.

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.

Table de matière
Sérialisation et désérialisation en PythonSérialisation en PythonDésérialisation d'objets en PythonConclusion

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.

Processus de sérialisation et désérialisation avec Pickle
La sérialisation, est également connue sous le nom de pickling

Avantages de la sérialisation en Python

La sérialisation offre plusieurs avantages majeurs dans la gestion des objets Python, notamment :

Avantages de la sérialisation avec Pickle
  • 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.

Documentation officielle du module Pickle
Le module pickle présente des limitations en matière de sécurité. Il n’est pas sécurisé pour la désérialisation d’objets provenant de sources non fiables. En effet, des données binaires malveillantes peuvent être créées de manière à exécuter du code arbitraire lors de leur désérialisation. Par conséquent, il est essentiel de désérialiser uniquement des objets provenant de sources de confiance.

Formation Python : Se former à la persistance des données

Exploitez la persistance des données en python

Découvrir cette formation
image d'un joueur de cybersport avec un ordinateur dans un environnement technologique

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 :

Documentation de la fonction pickle.dumps()
Il existe également une fonction nommée dumps qui permet de sérialiser des données directement dans une chaîne de caractères, plutôt que dans un fichier.
				
					with open('objet.pickle', 'wb') as fichier:
pickle.dump(objet, fichier)
				
			
Le mode wb signifie que nous ouvrons le fichier en mode écriture binaire.

Lors de l’exécution de ce code, voici le contenu sérialisé est écrit dans le fichier spécifié :

Contenu sérialisé dans un fichier objet.pickle

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:

Contenu sérialisé d'un fichier objet.pickle

Python

Maîtrisez Python et transformez vos idées en projets concrets !

Découvrir cette formation
Guide complet Python pour développeurs et informaticiens 2024

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

Schéma des étapes de désérialisation avec Pickle
  • 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 :

Résultat de l'exécution d'un programme utilisant Pickle

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 !

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

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.

Cet article fait partie du guide Tuto Python Gratuit : Apprenez les Bases et Réalisez des Projets Pratiques, partie 23 sur 23.
< Travailler avec des fichiers XML en PythonExercice Python : Application Gestion de DVD avec SQLite >

ÉTIQUETÉ : Python
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Sérialisation et Désérialisation Python : Guide Complet et Pratique

© Alphorm - Tous droits réservés