Python-Datenpersistenz - Objektserialisierung
Das in Python integrierte Dateiobjekt, das von der in Python integrierten open () -Funktion zurückgegeben wird, weist ein wichtiges Manko auf. Beim Öffnen im Modus 'w' akzeptiert die Methode write () nur das Zeichenfolgenobjekt.
Das heißt, wenn Sie Daten in einer Form ohne Zeichenfolge darstellen lassen, die entweder in integrierten Klassen (Zahlen, Wörterbuch, Listen oder Tupel) oder in anderen benutzerdefinierten Klassen enthalten sind, können sie nicht direkt in eine Datei geschrieben werden. Vor dem Schreiben müssen Sie es in seine Zeichenfolgendarstellung konvertieren.
numbers=[10,20,30,40]
file=open('numbers.txt','w')
file.write(str(numbers))
file.close()
Für eine Binärdatei Argument zu write()Methode muss ein Byte-Objekt sein. Beispielsweise wird die Liste der Ganzzahlen von in Bytes konvertiertbytearray() Funktion und dann in die Datei geschrieben.
numbers=[10,20,30,40]
data=bytearray(numbers)
file.write(data)
file.close()
Um Daten aus der Datei im jeweiligen Datentyp zurückzulesen, muss eine umgekehrte Konvertierung durchgeführt werden.
file=open('numbers.txt','rb')
data=file.read()
print (list(data))
Diese Art der manuellen Konvertierung eines Objekts in ein Zeichenfolgen- oder Byteformat (und umgekehrt) ist sehr umständlich und langwierig. Es ist möglich, den Status eines Python-Objekts in Form eines Byte-Streams direkt in einer Datei oder einem Speicher-Stream zu speichern und in den ursprünglichen Status abzurufen. Dieser Vorgang wird als Serialisierung und De-Serialisierung bezeichnet.
Die in Python integrierte Bibliothek enthält verschiedene Module für den Serialisierungs- und Deserialisierungsprozess.
Sr.Nr. | Name & Beschreibung |
---|---|
1 | pickle Python-spezifische Serialisierungsbibliothek |
2 | marshal Bibliothek, die intern für die Serialisierung verwendet wird |
3 | shelve Pythonische Objektpersistenz |
4 | dbm Bibliothek mit Schnittstelle zur Unix-Datenbank |
5 | csv Bibliothek zum Speichern und Abrufen von Python-Daten im CSV-Format |
6 | json Bibliothek zur Serialisierung in das universelle JSON-Format |