Serialisieren und Deserialisieren von Daten in Python

Python bietet verschiedene Möglichkeiten zum Serialisieren / Deserialisieren von Daten . In diesem Tutorial sehen wir das Marshall- Modul und das Cpickle- Modul. Bevor wir uns mit der Serialisierung in Python befassen, werden wir dieses Konzept kurz erläutern. Serialisierung ist ein weit verbreitetes Verfahren, um Objekte in einer Datei oder Datenbank zu speichern oder über das Netzwerk zu senden.

Es ist Zeit, mit dem Tutorial zu beginnen. Zu jedem Modul sehen wir ein Beispiel.

1. Modul Marschall

Bevor Sie beginnen, sollten Sie wissen, dass dieses Modul die Kompatibilität zwischen verschiedenen Versionen des Python-Compilers nicht gewährleistet.

Beispiel 1

Schauen wir uns das erste Beispiel ganz einfach an:

 Import Marschall data = [1, 2, 3, 4] objectBytes = marshal.dumps (data) print ("Serialized:", objectBytes) objectLoad = marshal.loads (objectBytes) print ("Deserialized:", objectLoad) 

Als ersten Schritt importieren wir die Marshall-Bibliothek. Wir haben eine Liste erstellt, die wir serialisieren, dann malen wir sie und deserialisieren sie. Die Dumps- Funktion ist für die Serialisierung und die Funktionslasten von deserializar verantwortlich (beide empfangen das Objekt, mit dem sie gesperrt werden sollen). Sehr einfach, wie Sie gesehen haben. Als nächstes hinterlasse ich eine Aufzeichnung seiner Ausführung:

serializar_python_1.jpg

Und hier schließen wir mit dem ersten Beispiel.

Beispiel 2

In diesem Beispiel schreiben wir ein Objekt in eine Datei.

 Import Marschall data = [1, 2, 3, 4] fileOut = open ("file.dat", "bw") marshal.dump (data, fileOut) fileOut.close () fileIn = open ("file.dat", "br") dataLoad = marshal.load (fileIn) print ("Deserialized:", dataLoad) fileIn.close () 

Der Import und die Liste bleiben erhalten, nur jetzt werden wir Dateien verwenden, wir öffnen eine Datei zum Schreiben, das b steht für Bytes und wir geben die Liste aus (jetzt ist die Funktion dump und sie empfängt die zu schreibenden Daten und die Datei), wenn wir haben es geschlossen beendet. Zum Abschluss öffnen wir dieselbe Datei im Lesemodus und lesen daraus (beachten Sie, dass die Funktion geladen ist und die Datei als Parameter empfängt). Zum Abschluss schließen wir die Datei.

See also  Deaktivieren Sie die automatische Wiedergabe von Facebook

Wenn wir uns die Datei file.dat ansehen , sehen wir Folgendes:

file.jpg

Das Netzwerk ist nicht viel schwieriger, denken Sie nur an die geringe Einschränkung der Kompatibilität zwischen Python-Versionen. Fahren wir mit dem anderen Modul fort.

2. Modul cpickle

Dieses Modul ist in C geschrieben, es gibt ein weiteres in Python entwickeltes namens pickle, aber es ist langsamer, daher ist es ratsam, cpickle zu verwenden. Im Gegensatz zu Marschall wird dieses Modul die Kompatibilität zwischen Python-Versionen gewährleisten, daher müssen wir diese Dinge vor der Programmierung berücksichtigen.

Hinweis
In Python 3 wurde cPickle in _pickle umbenannt und vom pickle-Modul automatisch verwendet.

Für dieses Modul sehen wir ein Beispiel, in dem wir Sockets verwenden, wir sehen den Servercode, es ist nur zu sehen, wie wir eine Serialisierung oder Deserialisierung durchführen würden, weshalb die Fehlerbehandlung nicht enthalten ist und nur eine Nachricht verwendet wird.

 Import-Socket Import Gurke s = socket.socket () s.bind (("localhost", 2016)) s.listen (1) conn, addr = s.accept () data = conn.recv (1024) print ("Daten empfangen:", Daten) print ("Deserializados:", pickle.loads (data)) s.close () 

Wir sehen, dass alles wie normale Sockets funktioniert, nur dass die empfangenen Daten serialisiert ankommen. Deshalb deserialisieren wir sie mit den Funktionsladevorgängen, wie Sie sehen können, wie im Marshall-Modul. Zum Schluss sehen wir uns den Client an:

 Import-Socket Import Gurke s = socket.socket () data = [1, 2, 3, 4] objectBytes = pickle.dumps (data) s.connect (("localhost", 2016)) am senden (objectBytes) s.close () 

Es ist keine größere Komplikation, wir serialisieren das Objekt mit Dumps und senden es an den erstellten Socket. Dann lasse ich die Serverausgabe, wenn ein Client verbunden ist, die Clientausgabe wird ignoriert, da sie nichts anzeigt.

See also  So legen Sie Kontrollkästchen in Word 2019 oder Excel 2019 fest

serializar_python_2.jpg

Bis hierher kommt das Tutorial zum Serialisieren und Deserialisieren von Daten in Python, da wir wissen, dass diese Sprache viele Dinge erleichtert.

Hinweis
Im Tutorial wird die Version von Python 3.5 verwendet .

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *