En Python, nous avons parfois besoin de sauvegarder l'objet sur le disque pour une utilisation ultérieure. Cela peut être fait en utilisant Python pickle. Dans cet article, nous découvrirons les cornichons en Python ainsi que quelques exemples.
Python Pickle — Sérialisation d'objets Python
Python module de cornichon est utilisé pour sérialiser et désérialiser une structure d'objet Python. N'importe quel objet en Python peut être décapé afin de pouvoir être enregistré sur le disque. Ce que Pickle fait, c'est sérialiser l'objet avant de l'écrire dans un fichier. Le pickling est un moyen de convertir un objet Python (liste, dictionnaire, etc.) en un flux de caractères. L'idée est que ce flux de caractères contient toutes les informations nécessaires pour reconstruire l'objet dans un autre Python scénario. Il fournit la possibilité de convertir n'importe quel objet Python en flux d'octets. Ce flux d'octets contient toutes les informations essentielles sur l'objet afin qu'il puisse être reconstruit ou décapé et retrouver sa forme originale dans n'importe quel Python.

Fonctionnement d'une sérialisation
Exemple de cornichon Python
Décapage sans lime
Dans cet exemple, nous allons sérialiser les données du dictionnaire et les stocker dans un flux d'octets. Ensuite, ces données sont désérialisées en utilisant cornichon.loads() fonction dans l'objet Python d'origine.
Python3
exemple de code c#
import> pickle> # initializing data to be stored in db> Omkar>=> {>'key'> :>'Omkar'>,>'name'> :>'Omkar Pathak'>,> 'age'> :>21>,>'pay'> :>40000>}> Jagdish>=> {>'key'> :>'Jagdish'>,>'name'> :>'Jagdish Pathak'>,> 'age'> :>50>,>'pay'> :>50000>}> # database> db>=> {}> db[>'Omkar'>]>=> Omkar> db[>'Jagdish'>]>=> Jagdish> # For storing> # type(b) gives ;> b>=> pickle.dumps(db)> # For loading> myEntry>=> pickle.loads(b)> print>(myEntry)> |
>
signification dhl
>
Sortir:
{'Omkar': {'key': 'Omkar', 'name': 'Omkar Pathak', 'age': 21, 'pay': 40000}, 'Jagdish': {'key': 'Jagdish', 'name': 'Jagdish Pathak', 'age': 50, 'pay': 50000}}> Décapage avec une lime
Dans cet exemple, nous utiliserons un fichier pickle pour y écrire d’abord les données à l’aide de la fonction pickle.dump(). Ensuite, en utilisant la fonction pickle.load(), nous chargerons finement le cornichon dans un script Python et imprimerons ses données sous la forme d'un dictionnaire Python.
Python3
# Python3 program to illustrate store> # efficiently using pickle module> # Module translates an in-memory Python object> # into a serialized byte stream—a string of> # bytes that can be written to any file-like object.> import> pickle> def> storeData():> ># initializing data to be stored in db> >Omkar>=> {>'key'> :>'Omkar'>,>'name'> :>'Omkar Pathak'>,> >'age'> :>21>,>'pay'> :>40000>}> >Jagdish>=> {>'key'> :>'Jagdish'>,>'name'> :>'Jagdish Pathak'>,> >'age'> :>50>,>'pay'> :>50000>}> ># database> >db>=> {}> >db[>'Omkar'>]>=> Omkar> >db[>'Jagdish'>]>=> Jagdish> > ># Its important to use binary mode> >dbfile>=> open>(>'examplePickle'>,>'ab'>)> > ># source, destination> >pickle.dump(db, dbfile)> >dbfile.close()> def> loadData():> ># for reading also binary mode is important> >dbfile>=> open>(>'examplePickle'>,>'rb'>)> >db>=> pickle.load(dbfile)> >for> keys>in> db:> >print>(keys,>'=>'>, db[keys])> >dbfile.close()> if> __name__>=>=> '__main__'>:> >storeData()> >loadData()> |
>
>
Sortir:
Omkar =>{'clé' : 'Omkar', 'nom' : 'Omkar Pathak', 'âge' : 21, 'pay' : 40000} Jagdish => {'clé ': 'Jagdish', 'nom': 'Jagdish Pathak', 'age': 50, 'pay': 50000}> Avantages de l'utilisation de Pickle en Python
- Objets récursifs (objets contenant des références à eux-mêmes) : Pickle garde une trace des objets qu'il a déjà sérialisés, de sorte que les références ultérieures au même objet ne seront plus sérialisées. (Le module marshal se brise pour cela.)
- Partage d'objets (références au même objet à différents endroits) : Ceci est similaire aux objets auto-référencés. Pickle stocke l'objet une fois et garantit que toutes les autres références pointent vers la copie principale. Les objets partagés restent partagés, ce qui peut être très important pour les objets mutables.
- Classes définies par l'utilisateur et leurs instances : Marshal ne les prend pas du tout en charge, mais Pickle peut enregistrer et restaurer les instances de classe de manière transparente. La définition de classe doit être importable et résider dans le même module que lorsque l'objet a été stocké.
Inconvénients de l'utilisation de Pickle en Python
- Dépendance de la version Python : Les données de picle sont si sensibles à la version de Python produite. Objet mariné créé avec une version de Python qui pourrait ne pas être décapé avec différentes versions.
- Non lisible : Le format de cornichon est binaire et difficilement lisible ou modifiable par les humains. Les contrats au format JSON ou XML peuvent être facilement modifiés.
- Inefficacité des données volumineuses : Des ensembles de données volumineux peuvent ralentir le décapage et le décapage. La sérialisation pourrait être plus appropriée pour de tels cas d'utilisation.
Conclusion
Bien que Python Pickle offre des fonctionnalités de sérialisation d'objets, les développeurs conservent des limites, en particulier lorsqu'ils travaillent sur différentes versions de Python ou traitent de grands ensembles de données. Il est important de se rappeler de toujours tenir compte des besoins spécifiques de votre application pour déterminer si ickle ou une alternative comme JSON, XML est adapté à la sérialisation.
caractère de chaîne Java