So serialisieren und deserialisieren Sie Daten in Python

Python hat mehrere Möglichkeiten, Daten zu serialisieren/deserialisieren. In diesem Tutorial werden wir das Modul sehen Marschall und das Modul Pickle. Bevor wir uns ansehen, wie man in Python serialisiert, wollen wir dieses Konzept kurz erklären. Serialisierung ist ein weit verbreiteter Prozess, um Objekte in einer Datei oder Datenbank zu speichern oder über das Netzwerk zu senden.

Es ist an der Zeit, mit dem Tutorial zu beginnen, wir werden bei jedem Modul ein Beispiel sehen.

1. Marshall-Modul


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

Beispiel 1
Sehen wir uns das erste, sehr einfache Beispiel an:

 Marshall-Daten importieren = [1, 2, 3, 4] objectBytes = Marshall.dumps (Daten) print ("Serialized:", objectBytes) objectLoad = Marshall.loads (objectBytes) print ("Deserialized:", objectLoad)
Als ersten Schritt importieren wir die Marshall-Bibliothek, wir haben eine Liste erstellt, die wir serialisieren werden, dann zeichnen wir sie und deserialisieren sie. Die Funktion deponiert kümmert sich um die Serialisierung und die Funktion Ladungen zu deserialisieren (beide erhalten das zu sperrende Objekt). Ganz einfach, wie Sie gesehen haben. Hier ist ein Screenshot seiner Ausführung:

Und hier schließen wir mit dem ersten Beispiel.

Beispiel 2
In diesem Beispiel werden wir ein Objekt in eine Datei schreiben.

 Marshall-Daten importieren = [1, 2, 3, 4] fileOut = open ("file.dat", "bw") Marshall.dump (data, fileOut) fileOut.close () fileIn = open ("file.dat", "br") dataLoad = Marshall.load (fileIn) print ("Deserialized:", dataLoad) fileIn.close () 
Der Import und die Liste bleiben erhalten, nur jetzt verwenden wir Dateien, wir öffnen eine Datei zum Schreiben, die B ist für Bytes, und wir geben die Liste ab (jetzt ist die Funktion entsorgen und empfängt die zu schreibenden Daten und die Datei), wenn wir fertig sind, schließen wir es. Zum Abschluss öffnen wir dieselbe Datei im Lesemodus und lesen daraus (beachten Sie, dass die Funktion Belastung, und das die Datei als Parameter erhält), schließen wir die Datei zum Abschluss.

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

Das Netzwerken ist nicht viel schwieriger, denken Sie nur an die kleine Kompatibilitätsbeschränkung zwischen Python-Versionen. Kommen wir zum anderen Modul.

2. Pickle-Modul


Dieses Modul ist in C geschrieben, es gibt ein anderes namens pickle, das in Python entwickelt wurde, aber es ist langsamer, daher ist es ratsam, cpickle zu verwenden. Im Gegensatz zu Marshall garantiert dieses Modul die Kompatibilität zwischen Python-Versionen, daher müssen wir diese Dinge vor der Programmierung berücksichtigen.

NotizIn Python 3 wurde cPickle in _pickle umbenannt und wird automatisch vom pickle-Modul verwendet.

Für dieses Modul werden wir ein Beispiel sehen, in dem wir Sockets verwenden, wir werden den Servercode sehen, es geht nur darum, wie wir die Serialisierung oder Deserialisierung durchführen würden, deshalb beinhaltet es keine Fehlerbehandlung und a einzelne Nachricht verwendet wird.

 import socket import pickle s = socket.socket () s.bind (("localhost", 2016)) s.listen (1) conn, addr = s.accept () data = conn.recv (1024) print ("Data empfangen: ", data) print (" Deserialized: ", pickle.loads (data)) s.close()
Wir sehen, dass alles wie bei normalen Sockets funktioniert, nur dass die empfangenen Daten serialisiert ankommen, also deserialisieren wir sie mit der Funktion Ladungen, wie Sie sehen können, heißt es genauso wie im Marshall-Modul. Schließlich sehen wir den Kunden:
 import socket import pickle s = socket.socket () data = [1, 2, 3, 4] objectBytes = pickle.dumps (data) s.connect ("localhost", 2016)) s.send (objectBytes) s. schließen ()
Es hat keine größeren Komplikationen, wir serialisieren das Objekt mit deponiert und wir senden es an den erstellten Socket. Unten belasse ich die Serverausgabe, wenn sich ein Client verbindet, die Clientausgabe wird ignoriert, da sie nichts anzeigt.

Soweit kommt das Tutorial zum Serialisieren und Deserialisieren von Daten in Python, da wir wissen, dass diese Sprache die Dinge für uns viel einfacher macht.

NotizDas Tutorial verwendet die Version von Python 3.5.

Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave