Pickles in Python sind lecker in dem Sinne, dass sie ein Python-Objekt als Bytefolge darstellen. Mit diesen Bytes können viele Dinge tatsächlich gemacht werden. Sie können sie beispielsweise in einer Datei oder Datenbank speichern oder über ein Netzwerk übertragen.
Die eingelesene Darstellung eines Python-Objekts heißt a Pickle-Datei. Die eingelegte Datei kann daher für verschiedene Zwecke verwendet werden, z. B. zum Speichern von Ergebnissen, die von einem anderen Python-Programm verwendet werden sollen, oder zum Erstellen von Sicherungen. Das ursprüngliche Python-Objekt erhalten Sie einfach unbestechlich diese Zeichenfolge von Bytes.
Um in Python zu gurken, verwenden wir die Essiggurke
Modul. Wie in der Dokumentation angegeben:
Das Pickle-Modul implementiert binäre Protokolle zum Serialisieren und De-Serialisieren einer Python-Objektstruktur. "Beizen" ist der Prozess, bei dem eine Python-Objekthierarchie in einen Bytestrom konvertiert wird, und "Entpickeln" ist die inverse Operation, bei der ein Bytestrom (aus einer Binärdatei oder einem bytesähnlichen Objekt) in eine Objekthierarchie zurück konvertiert wird. Beizen (und Entpickeln) wird alternativ als "Serialisierung", "Rangieren" oder "Abflachen" bezeichnet. Um jedoch Verwirrung zu vermeiden, werden hier die Bezeichnungen "Beizen" und "Abnehmen" verwendet..
Das Essiggurke
Mit diesem Modul können wir fast jedes Python-Objekt speichern direkt in eine Datei oder einen String, ohne Konvertierungen durchführen zu müssen. Was zum Essiggurke
Modul führt tatsächlich aus, was so genannt wird Objektserialisierung, das heißt, Objekte in und aus Byte-Zeichenketten konvertieren. Das zu kommissionierende Objekt wird in einen Bytestrom serialisiert, der beispielsweise in eine Datei geschrieben und später wiederhergestellt werden kann.
Essiggurke
Das Essiggurke
Das Modul ist bereits in der Python-Installation enthalten. Um eine Liste der installierten Module abzurufen, können Sie den folgenden Befehl in die Python-Eingabeaufforderung eingeben: Hilfe ("Module")
.
Also alles was Sie tun müssen, um mit dem zu arbeiten Essiggurke
Modul ist zu Pickle importieren
!
In diesem Abschnitt betrachten wir einige Beispiele für das Beizen, um das Konzept besser zu verstehen. Beginnen wir mit dem Erstellen einer Pickle-Datei aus einem Objekt. Unser Ziel hier ist das machen
Liste, die wir im Python-Listen-Tutorial erstellt haben.
todo = ['blog post schreiben', 'auf E-Mail antworten', 'in einem Buch lesen']
Um unser Listenobjekt (machen
) können wir Folgendes tun:
import pickle todo = ['blog post schreiben', 'auf E-Mail antworten', 'in einem Buch lesen'] pickle_file = Datei ('todo.pickle', 'w') pickle.dump (todo, pickle_file)
Beachten Sie, dass wir eine gemacht haben Pickle importieren
in der Lage sein, die Essiggurke
Modul. Wir haben auch eine Pickle-Datei erstellt, in der das Pickel-Objekt gespeichert wird, nämlich todo.pickle
. Das Dump
Funktion schreibt eine eingelegte Darstellung von machen
auf das geöffnete Dateiobjekt pickle_file
. Mit anderen Worten, die Dump
Funktion hat hier zwei Argumente: das zu pickle Objekt, welches das ist machen
liste und ein Dateiobjekt, in das die Pickle geschrieben werden soll todo.pickle
.
Angenommen, wir möchten die gepickelten Daten entpacken (wiederherstellen). In unserem Fall ist dies das machen
Liste. Dazu können wir folgendes Skript schreiben:
import pickle pickle_file = datei ('todo.pickle') todo = pickle.load (pickle_file) print (todo)
Das obige Skript gibt die Ausgabe aus machen
Listenelemente:
['blog post schreiben', 'auf e-mail antworten', 'in einem buch lesen']]
Wie in der Dokumentation erwähnt, ist das lade Datei)
Funktion führt Folgendes aus:
Liest eine Zeichenfolge aus der geöffneten Dateiobjektdatei und interpretiert sie als Pickle-Datenstrom, wobei die ursprüngliche Objekthierarchie rekonstruiert und zurückgegeben wird. Das ist äquivalent zuUnpickler (Datei) .load ()
.
Im obigen Abschnitt haben wir gesehen, wie wir Pickles in eine Datei schreiben / laden können. Dies ist jedoch nicht notwendig. Ich meine, wenn wir Pickles schreiben / laden wollen, müssen wir nicht immer mit Dateien umgehen - wir können stattdessen mit Pickles als Strings arbeiten. Wir können also folgendes tun:
import pickle todo = ['blog post schreiben', 'auf E-Mail antworten', 'in einem Buch lesen'] pickled_data = pickle.dumps (todo) print (pickled_data)
Beachten Sie, dass wir die verwendet haben Dumps
(mit einem "s" am Ende) Funktion, die laut Dokumentation:
Gibt die kommissionierte Darstellung des Objekts als Zeichenfolge zurück, anstatt es in eine Datei zu schreiben.
Um die oben genannten Daten wiederherzustellen, können wir die Lasten (String)
Funktion wie folgt:
restore_data = pickle.loads (pickled_data)
Nach der Dokumentation, was die Ladungen
Funktion tut, dass es:
Liest eine ausgewählte Objekthierarchie aus einer Zeichenfolge. Zeichen in der Zeichenfolge nach der Darstellung des ausgewählten Objekts werden ignoriert.
In den obigen Beispielen haben wir uns mit dem Beizen und Wiederherstellen (Laden) von jeweils nur einem Objekt befasst. In diesem Abschnitt werde ich Ihnen zeigen, wie wir das für mehr als ein Objekt tun können. Sagen wir, dass wir die folgenden Objekte haben:
name = 'Abder' website = 'http://abder.io' english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture' # dictionary tup = (31, 'abder', 4.0) # Tupel
Wenn Sie mehr über Python-Wörterbücher und -Tupel erfahren möchten, lesen Sie die folgenden Lernprogramme:
Wir können die oben genannten Objekte einfach durch Ausführen von a auswählen Serie von Dump
Funktionen wie folgt:
import pickle name = 'Abder' website = 'http://abder.io' english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture' # dictionary tup = ( 31, 'abder', 4.0) # Tupel pickled_file = open ('pickled_file.pickle', 'w') pickle.dump (name, pickled_file) pickle.dump (website, pickled_file) pickle.dump (engl_french, pickled_file) pickle. dump (tup, pickled_file)
Dadurch werden alle vier Objekte in der Pickle-Datei ausgewählt pickled_file.pickle
.
Es gibt noch eine weitere wunderbare Möglichkeit, das obige Skript mithilfe von zu schreiben Pickler
Klasse in der Essiggurke
Modul wie folgt:
from pickle import Pickler name = 'Abder' website = 'http://abder.io' english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture' # dictionary tup = (31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') p = Pickler (pickled_file) p.dump (name); p.dump (Website); p.dump (english_french); p.dump (tup)
Um die Originaldaten wiederherzustellen (zu laden), können wir einfach mehrere Daten verwenden Belastung
Funktion wie folgt:
import pickle pickled_file = open ('pickled_file.pickle') name = pickle.load (pickled_file) website = pickle.load (pickled_file) english_french = pickle.load (pickled_file) tup = pickle.load (pickled_file) print ('Name:' ) drucken (Name) drucken ('Website:') drucken (Website) drucken ('Englsh to French:') drucken (english_french) drucken ('Tuple data:') drucken (tup)
Die Ausgabe des obigen Skripts lautet:
Name: Abder Website: http://abder.io Englsh in Französisch: 'Auto': 'Voiture', 'Stift': 'Stylo', 'Papier': 'Papier' Tupel-Daten: (31, 'Abder') 4,0)
Wie bei der Pickler
Klasse können wir das obige Skript mit der Unpickler
Klasse in der Essiggurke
Modul wie folgt:
aus pickle importieren Unpickler pickled_file = open ('pickled_file.pickle') u = Unpickler (pickled_file) name = u.load (); website = u.load (); english_french = u.load (); tup = u.load () print ('Name:') print (Name) print ('Website:') print (Website) print ('englisch nach französisch:') print (english_french) print ('Tuple data:') drucken (tup)
Beachten Sie, dass die Variablen in derselben Reihenfolge geschrieben und gelesen werden müssen, um die gewünschte Ausgabe zu erhalten. Um hier Probleme zu vermeiden, können wir die Daten wie folgt mit einem Wörterbuch verwalten:
import pickle name = 'Abder' website = 'http://abder.io' english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture' # dictionary tup = ( 31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') data = 'name': name, 'website': website, 'english_french_dictionary': english_french, 'tuple': tup pickle.dump (data, pickled_file)
Zum Wiederherstellen (Laden) der im obigen Skript ausgewählten Daten können wir Folgendes tun:
import pickle pickled_file = open ('pickled_file.pickle') data = pickle.load (pickled_file) name = data ['name'] website = data ['website'] english_french = data ['english_french_dictionary'] tup = data ['tuple '] drucken (' Name: ') drucken (Name) drucken (' Website: ') drucken (Website) drucken (' englisch nach französisch: ') drucken (english_french) drucken (' Tuple data: ') drucken (tup)
Nun, das scheint eine interessante Kombination zu sein. Wenn Sie sich fragen, was Pandas sind, können Sie im Tutorial Einführung in Pandas mehr darüber erfahren. Die grundlegende Datenstruktur von Pandas
wird genannt DataFrame
, eine tabellarische Datenstruktur, die aus geordneten Spalten und Zeilen besteht.
Nehmen wir ein Beispiel für DataFrame
aus dem Pandas-Tutorial:
importieren Sie Pandas als pd name_age = 'Name': ['Ali', 'Bill', 'David', 'Hany', 'Ibtisam'], 'Age': [32, 55, 20, 43, 30] data_frame = pd.DataFrame (name_age)
Um unsere zu beizen DataFrame
, wir können die verwenden to_pickle ()
Funktion wie folgt:
data_frame.to_pickle ('my_panda.pickle')
Um das Pickled wiederherzustellen (zu laden) DataFrame
, wir können die verwenden read_pickle ()
Funktion wie folgt:
restore_data_frame = pd.read_pickle ('my_panda.pickle')
Wenn wir das, was wir in diesem Abschnitt erwähnt haben, zusammenfassen, sieht das Skript, das ein Pandasobjekt anpickt und lädt, so aus:
importieren Sie Pandas als 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 ('my_panda.pickle') restore_data_frame = pd.read_pickle ('my_panda.pickle') drucken (restore_data_frame)
In diesem Tutorial habe ich ein interessantes Modul namens "Covers" behandelt Essiggurke
. Wir haben gesehen, wie einfach dieses Modul es uns ermöglicht, Python-Objekte für verschiedene Zwecke zu speichern, z. B. für die Verwendung des Objekts mit einem anderen Python-Programm, das Übertragen des Objekts über ein Netzwerk, das Speichern des Objekts für die spätere Verwendung usw. Wir können das Python-Objekt einfach auswählen und entpacken (laden), wenn das ursprüngliche Objekt wiederhergestellt werden soll.
Zögern Sie nicht zu sehen, was wir für den Verkauf und zum Lernen auf dem Markt zur Verfügung haben, und zögern Sie nicht, Fragen zu stellen und mit dem untenstehenden Feed wertvolles Feedback zu geben.