Legen Sie eine Liste in einer Pickle-Datei ab und rufen Sie sie später wieder ab [geschlossen]

75

Ich versuche, eine Liste von Zeichenfolgen zu speichern, damit später darauf zugegriffen werden kann. Wie kann es mit Gurke erreicht werden? Ein anschauliches Beispiel könnte helfen.

Lewis
quelle
4
Hast du dir die Dokumente angesehen? docs.python.org/3/library/pickle.html#examples
Padraic Cunningham
2
Was enthält die Liste?
Ry-
4
Dann jsonist die leichtere Option.
Martijn Pieters
9
Ich verstehe nicht, warum diese Frage geschlossen ist. Dies ist eine einfache Frage zur Python-Programmierung. Diese Frage und ihre akzeptierte Antwort bieten eine sehr schnelle, auf der Google-Suche basierende Antwort auf eine einfache Frage, die viele Programmierer für die tägliche Arbeit wissen müssen.
Dan Nissenbaum
1
Ich habe die Frage bearbeitet, um (sekundäre) Kommentare in der Frage zu entfernen, von denen ich vermute, dass sie das Schließen der Frage verursacht haben.
Dan Nissenbaum

Antworten:

136

Durch das Beizen wird Ihre Liste serialisiert (konvertiert und ihre Einträge in eine eindeutige Byte-Zeichenfolge), sodass Sie sie auf der Festplatte speichern können. Sie können auch pickle verwenden, um Ihre ursprüngliche Liste abzurufen und aus der gespeicherten Datei zu laden.

Erstellen Sie also zuerst eine Liste und pickle.dumpsenden Sie sie dann an eine Datei ...

Python 3.4.1 (default, May 21 2014, 12:39:51) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> mylist = ['I wish to complain about this parrot what I purchased not half an hour ago from this very boutique.', "Oh yes, the, uh, the Norwegian Blue...What's,uh...What's wrong with it?", "I'll tell you what's wrong with it, my lad. 'E's dead, that's what's wrong with it!", "No, no, 'e's uh,...he's resting."]
>>> 
>>> import pickle
>>> 
>>> with open('parrot.pkl', 'wb') as f:
...   pickle.dump(mylist, f)
... 
>>> 

Dann kündige und komm später wieder ... und öffne mit pickle.load...

Python 3.4.1 (default, May 21 2014, 12:39:51) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pickle
>>> with open('parrot.pkl', 'rb') as f:
...   mynewlist = pickle.load(f)
... 
>>> mynewlist
['I wish to complain about this parrot what I purchased not half an hour ago from this very boutique.', "Oh yes, the, uh, the Norwegian Blue...What's,uh...What's wrong with it?", "I'll tell you what's wrong with it, my lad. 'E's dead, that's what's wrong with it!", "No, no, 'e's uh,...he's resting."]
>>>
Mike McKerns
quelle
40
Es ist eine schwere Geschichte in dieser Liste von Saiten Mike ... Trotzdem danke!
Leogout
Was ist, wenn die Liste zu groß für Ihr Gedächtnis ist, sodass Sie nicht die gesamte Liste auf einmal in den Speicher lesen möchten, sondern jeweils nur einen Teil der Liste lesen möchten. Ist es möglich, nur eine Teilliste durch Pickle in den Speicher einzulesen?
Watt
@ Watt: Wenn es als Liste eingelegt wurde, dann nein. Wenn die Liste in etwas konvertiert wurde, das in Schritten gelesen werden kann, dann ja.
Mike McKerns