Cornichons de python

Les cornichons en Python sont savoureux dans le sens où ils représentent un objet Python comme une chaîne d'octets. Beaucoup de choses peuvent être faites avec ces octets. Par exemple, vous pouvez les stocker dans un fichier ou une base de données, ou les transférer sur un réseau.. 

La représentation marinée d’un objet Python est appelée un dossier de cornichon. Le fichier picklé peut donc être utilisé à des fins différentes, telles que stocker des résultats qui seront utilisés par un autre programme Python ou écrire des sauvegardes. Pour obtenir l'objet Python d'origine, vous devez simplement décoller cette chaîne d'octets.

Pickle en Python, nous allons utiliser le cornichon module. Comme indiqué dans la documentation:

Le module pickle implémente des protocoles binaires pour sérialiser et désérialiser une structure d'objet Python. «Pickling» est le processus par lequel une hiérarchie d'objets Python est convertie en un flux d'octets et «unpickling» est l'opération inverse, par laquelle un flux d'octets (à partir d'un fichier binaire ou d'un objet de type octets) est reconverti en une hiérarchie d'objets. Pickling (et unpickling) est également connu sous le nom de "sérialisation", "marshalling" ou "aplatissement"; cependant, pour éviter toute confusion, les termes utilisés ici sont «décaper» et «décoller».

le cornichon module nous permet de stocker presque n'importe quel objet Python directement dans un fichier ou une chaîne sans qu'il soit nécessaire d'effectuer des conversions. Ce que le cornichon module effectue réellement est ce qu'on appelle sérialisation d'objet, c'est-à-dire convertir des objets en et à partir de chaînes d'octets. L'objet à décaper sera sérialisé dans un flux d'octets pouvant être écrit dans un fichier, par exemple, et restauré ultérieurement..

L'installation cornichon

le cornichon Le module est en fait déjà fourni avec votre installation Python. Pour obtenir la liste des modules installés, vous pouvez taper la commande suivante à l'invite de Python: aide ('modules').

Donc, tout ce que vous devez faire pour travailler avec le cornichon module est à pickle d'importation!

Création d'un fichier de cornichon

À partir de cette section, examinons quelques exemples de décapage afin de mieux comprendre le concept. Commençons par créer un fichier pickle à partir d'un objet. Notre objet ici sera le faire liste que nous avons faite dans le tutoriel sur les listes de Python.

todo = ['écrire un article de blog', 'répondre à un email', 'lire dans un livre']

Afin de décaper notre objet de liste (faire), nous pouvons faire ce qui suit:

importer pickle todo = ['écrire un article de blog', 'répondre à un email', 'lire dans un livre'] pickle_file = fichier ('todo.pickle', 'w') pickle.dump (todo, pickle_file)

Notez que nous avons fait un pickle d'importation pour pouvoir utiliser le cornichon module. Nous avons également créé un fichier pickle pour stocker l’objet décapé, à savoir: todo.pickle. le déverser fonction écrit une représentation marinée de faire à l'objet de fichier ouvert pickle_file. En d'autres termes, le déverser fonction a ici deux arguments: l'objet à pickle, qui est le faire liste, et un objet de fichier où nous voulons écrire le cornichon, qui est todo.pickle.

Décompresser (restaurer) les données picklées

Dites que nous voudrions unpickle (restaurer) les données marinées; dans notre cas, c'est le faire liste. Pour cela, nous pouvons écrire le script suivant:

importer pickle pickle_file = fichier ('todo.pickle') todo = pickle.load (pickle_file) print (à faire)

Le script ci-dessus affichera le faire éléments de la liste:

['écrire un article de blog', 'répondre à un email', 'lire dans un livre']

Comme mentionné dans la documentation, le fichier de chargement) fonction effectue les opérations suivantes:

Lisez une chaîne du fichier objet de fichier ouvert et interprétez-la comme un flux de données de pickle, reconstruisant et renvoyant la hiérarchie d'objet d'origine. Ceci est équivalent à Unpickler (fichier) .load ().

Cornichons comme des cordes

Dans la section ci-dessus, nous avons vu comment nous pouvons écrire / charger des pickles dans / à partir d'un fichier. Ce n'est pas nécessaire, cependant. Je veux dire que si nous voulons écrire / charger des pickles, nous n’avons pas toujours besoin de traiter des fichiers, nous pouvons plutôt utiliser des pickles comme des chaînes. Nous pouvons donc faire ce qui suit:

importer pickle todo = ['écrire un message sur le blog', 'répondre à un email', 'lire dans un livre'] pickled_data = pickle.dumps (todo) print (pickled_data)

Notez que nous avons utilisé le décharges (avec un "s" à la fin) fonction qui, selon la documentation:

Renvoie la représentation picklée de l'objet sous forme de chaîne, au lieu de l'écrire dans un fichier..

Afin de restaurer les données marinées ci-dessus, nous pouvons utiliser le charges (chaîne) fonction, comme suit:

restore_data = pickle.loads (pickled_data)

Selon la documentation, ce que le charges la fonction ne fait que ça:

Lit une hiérarchie d'objets picklés à partir d'une chaîne. Les caractères dans la chaîne au-delà de la représentation de l'objet décapé sont ignorés.

Mariner plus d'un objet

Dans les exemples ci-dessus, nous avons traité le décapage et la restauration (chargement) d’un seul objet à la fois. Dans cette section, je vais vous montrer comment nous pouvons le faire pour plusieurs objets. Disons que nous avons les objets suivants:

name = 'Abder' website = 'http://abder.io' english_french = 'paper': 'papier', 'stylo': 'stylo', 'voiture': 'voiture' # dictionnaire tup = (31, 'abder', 4.0) # tuple

Si vous souhaitez en savoir plus sur les dictionnaires et les tuples Python, consultez les didacticiels suivants:

  • Une mise à jour en douceur sur les dictionnaires de Python
  • Un rafraîchissement sur les nuplumes de python

Nous pouvons simplement décaper les objets ci-dessus en exécutant un séries de déverser fonctions, comme suit:

import pickle name = 'Abder' website = 'http://abder.io' english_french = 'paper': 'papier', 'stylo': 'stylo', 'voiture': 'voiture' # dictionary tup = ( 31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') pickle.dump (nom, pickled_file) pickle.dump (site Web, pickled_file) pickle.dump (english_french, pickled_file) pickle. dump (tup, pickled_file)

Cela permettra de mariner les quatre objets du fichier de cornichons pickled_file.pickle.

Il existe un autre moyen merveilleux d’écrire le script ci-dessus en utilisant le Pickler classe dans le cornichon module, comme suit:

from pickle import Pickler nom = 'Abder' website = 'http://abder.io' english_french = 'paper': 'papier', 'stylo': 'stylo', 'voiture': 'voiture' # dictionary tup = (31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') p = Pickler (pickled_file) p.dump (nom); p.dump (site web); p.dump (english_french); p.dump (tup)

Pour restaurer (charger) les données d'origine, nous pouvons simplement utiliser plus d'un charge fonction, comme suit:

import pickle pickled_file = open ('pickled_file.pickle') nom = pickle.load (pickled_file) site Web = pickle.load (pickled_file) english_french = pickle.load (pickled_file) tup = pickle.load (pickled_file) print ('Nom:' ) print (nom) print ('Website:') print (website) print ('anglais vers français:') print (english_french) print ('Données de tuple:') print (tup)

La sortie du script ci-dessus est:

Nom: Abder Site Web: http://abder.io Anglais vers Français: 'voiture': 'voiture', 'stylo': 'stylo', 'papier': 'papier' Données du tuple: (31 ans, 'abder' , 4.0)

Comme avec le Pickler classe, nous pouvons réécrire le script ci-dessus en utilisant le Unpickler classe dans le cornichon module, comme suit:

from pickle import Unpickler pickled_file = open ('pickled_file.pickle') u = Unpickler (pickled_file) name = u.load (); site web = u.load (); english_french = u.load (); tup = u.load () print ('Nom:') print (nom) print ('Website:') print (website) print ('anglais vers français:') print (english_french) print ('Données du tuple:') imprimer (tup)

Notez que les variables doivent être écrites et lues dans le même ordre pour obtenir la sortie souhaitée. Pour éviter tout problème ici, nous pouvons utiliser un dictionnaire pour gérer les données, comme suit:

import pickle name = 'Abder' website = 'http://abder.io' english_french = 'paper': 'papier', 'stylo': 'stylo', 'voiture': 'voiture' # dictionary tup = ( 31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') data = 'name': nom, 'website': site Web, 'english_french_dictionary': english_french, 'tuple': tup  pickle.dump (data, pickled_file)

Pour restaurer (charger) les données picklées dans le script ci-dessus, nous pouvons procéder comme suit:

import pickle pickled_file = open ('pickled_file.pickle') data = pickle.load (pickled_file) nom = data ['nom'] website = data ['site web'] english_french = data ['anglais_french_dictionary'] tup = data ['tuple '] print (' Nom: ') print (nom) print (' Website: ') print (website) print (' anglais vers français: ') print (english_french) print (' Données de tuple: ') print (tup)

Cornichons et pandas

Eh bien, cela semble une combinaison intéressante. Si vous vous demandez ce que sont les pandas, vous pouvez en apprendre davantage à leur sujet dans le didacticiel d’initiation aux pandas. La structure de données de base de pandas est appelé Trame de données, une structure de données tabulaire composée de colonnes et de lignes ordonnées.

Prenons un exemple de Trame de données du tutoriel Pandas:

pandas importés sous le nom pd name_age = 'Name': ['Ali', 'Bill', 'David', 'Hany', 'Ibtisam'], 'Age': [32, 55, 20, 43, 30] data_frame = pd.DataFrame (name_age)

Afin de mariner notre Trame de données, nous pouvons utiliser le to_pickle () fonction, comme suit:

data_frame.to_pickle ('mon_panda.pickle')

Restaurer le mariné Trame de données, nous pouvons utiliser le read_pickle () fonction, comme suit:

restore_data_frame = pd.read_pickle ('mon_panda.pickle')

En prenant tout ce que nous avons mentionné dans cette section, voici à quoi ressemble le script qui pickles et charge un objet pandas:

pandas importés sous le nom pd name_age = 'Name': ['Ali', 'Bill', 'David', 'Hany', 'Ibtisam'], 'Age': [32, 55, 20, 43, 30] data_frame = pd.DataFrame (name_age) data_frame.to_pickle ('mon_panda.pickle') restore_data_frame = pd.read_pickle ('mon_panda.pickle') print (restore_data_frame)

Conclusion

Dans ce tutoriel, j'ai couvert un module intéressant appelé cornichon. Nous avons vu avec quelle facilité ce module nous permet de stocker des objets Python à différentes fins, telles que l’utiliser avec un autre programme Python, le transfert de l’objet sur un réseau, la sauvegarde de l’objet pour une utilisation ultérieure, etc. Nous pouvons simplement décaper l’objet Python. , et unpickle (charge) quand on veut restaurer l'objet original.

N'hésitez pas à voir ce que nous avons disponible à la vente et à étudier sur le marché, et n'hésitez pas à poser des questions et à fournir vos précieux commentaires en utilisant le flux ci-dessous.