726 Stimmen

Wie kann ich pickle verwenden, um ein dict (oder ein anderes Python-Objekt) zu speichern?

Ich habe mir die Informationen angesehen, die die Python-Dokumente geben, aber ich bin immer noch ein wenig verwirrt. Könnte jemand einen Beispielcode posten, der eine neue Datei schreibt und dann Pickle verwendet, um ein Wörterbuch darin abzulegen?

11voto

John La Rooy Punkte 278961
>>> import pickle
>>> with open("/tmp/picklefile", "wb") as f:
...     pickle.dump({}, f)
... 

normalerweise ist es besser, die cPickle-Implementierung zu verwenden

>>> import cPickle as pickle
>>> help(pickle.dump)
Help on built-in function dump in module cPickle:

dump(...)
    dump(obj, file, protocol=0) -- Write an object in pickle format to the given file.

    See the Pickler docstring for the meaning of optional argument proto.

9voto

c0fec0de Punkte 611

Wenn Sie das Diktat nur in einer einzigen Datei speichern wollen, verwenden Sie pickle so

import pickle

a = {'hello': 'world'}

with open('filename.pickle', 'wb') as handle:
    pickle.dump(a, handle)

with open('filename.pickle', 'rb') as handle:
    b = pickle.load(handle)

Wenn Sie mehrere Wörterbücher in mehreren Dateien speichern und wiederherstellen möchten, um Zwischenspeichern und Speichern komplexerer Daten, verwenden Sie anycache . Es tut alle anderen Dinge, die Sie brauchen um pickle

from anycache import anycache

@anycache(cachedir='path/to/files')
def myfunc(hello):
    return {'hello', hello}

Anycache speichert die verschiedenen myfunc Ergebnisse abhängig von den Argumenten für verschiedenen Dateien in cachedir und lädt sie neu.

Véase el Dokumentation für alle weiteren Einzelheiten.

3voto

Zu deiner Information: Pandas hat jetzt eine Methode zum Speichern von Gurken.

Ich finde es einfacher.

pd.to_pickle(object_to_save,'/temp/saved_pkl.pickle' )

2voto

Rahul Nair Punkte 39
import pickle

dictobj = {'Jack' : 123, 'John' : 456}

filename = "/foldername/filestore"

fileobj = open(filename, 'wb')

pickle.dump(dictobj, fileobj)

fileobj.close()

2voto

gench Punkte 948

Wenn Sie das Schreiben oder Lesen in einer Zeile ohne Öffnen der Datei durchführen wollen:

  import joblib

  my_dict = {'hello': 'world'}

  joblib.dump(my_dict, "my_dict.pickle") # write pickle file
  my_dict_loaded = joblib.load("my_dict.pickle") # read pickle file

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X