1. Pickle-Paket
(1) Konvertieren Sie Objekte im Speicher in Textströme:
import pickle # define class class Bird(object): have_feather = True way_of_reproduction = 'egg' summer = Bird() # construct an object picklestring = pickle.dumps(summer) # serialize object
Verwenden Sie die Methode pickle.dumps(), um das Objekt zu konvertieren ein String-Picklestring (also ein Textstream). Dann können wir die normale Textspeichermethode verwenden, um die Zeichenfolge in der Datei zu speichern (Eingabe und Ausgabe der Textdatei).
Natürlich können wir auch die Methode pickle.dump() verwenden, um die beiden oben genannten Teile zu einem zu kombinieren:
import pickle # define class class Bird(object): have_feather = True way_of_reproduction = 'egg' summer = Bird() # construct an object fn = 'a.pkl' with open(fn, 'w') as f: # open file with write-mode picklestring = pickle.dump(summer, f) # serialize and save object
Das Objekt Sommer wird in der Datei a gespeichert .pkl
(2), Rekonstruieren Sie das Objekt
Zuerst müssen wir den Text aus dem Text lesen und ihn in einer Zeichenfolge speichern (Eingabe und Ausgabe der Textdatei). Verwenden Sie dann die Methode pickle.loads(str), um die Zeichenfolge in ein Objekt umzuwandeln. Denken Sie daran, dass unser Programm zu diesem Zeitpunkt bereits über eine Klassendefinition für das Objekt verfügen muss.
Darüber hinaus können wir auch die Methode pickle.load() verwenden, um die oben genannten Schritte zusammenzuführen:
import pickle # define the class before unpickle class Bird(object): have_feather = True way_of_reproduction = 'egg' fn = 'a.pkl' with open(fn, 'r') as f: summer = pickle.load(f) # read file and build object
2 > Die Funktionen und die Verwendung des cPickle-Pakets sind nahezu identisch mit denen des pickle-Pakets (die Unterschiede werden selten verwendet. Der Unterschied besteht darin, dass cPickle auf der Grundlage der C-Sprache geschrieben ist und 1.000-mal schneller ist als das pickle-Paket. Wenn wir im obigen Beispiel das cPickle-Paket verwenden möchten, können wir die Importanweisung wie folgt ändern:
cPickle als Pickle importieren
Es müssen keine Änderungen vorgenommen werden.