Das folgende Beispiel zeigt, wie Sie eine Beizdatei schreiben und lesen können. Beachten Sie, dass Sie, wenn Sie die Beizdaten an die Datei anhängen, weiterhin so lange aus der Datei lesen müssen, bis Sie das gewünschte Ergebnis gefunden haben oder eine Ausnahme generiert wird, indem Sie das Ende der Datei erreichen. Das macht die letzte Funktion.
import os
import pickle
PICKLE_FILE = 'pickle.dat'
def main():
# append data to the pickle file
add_to_pickle(PICKLE_FILE, 123)
add_to_pickle(PICKLE_FILE, 'Hello')
add_to_pickle(PICKLE_FILE, None)
add_to_pickle(PICKLE_FILE, b'World')
add_to_pickle(PICKLE_FILE, 456.789)
# load & show all stored objects
for item in read_from_pickle(PICKLE_FILE):
print(repr(item))
os.remove(PICKLE_FILE)
def add_to_pickle(path, item):
with open(path, 'ab') as file:
pickle.dump(item, file, pickle.HIGHEST_PROTOCOL)
def read_from_pickle(path):
with open(path, 'rb') as file:
try:
while True:
yield pickle.load(file)
except EOFError:
pass
if __name__ == '__main__':
main()
Sie hängen Objekte an Ihre Datei an. Wenn du die Pipette abnimmst, entpacke nur den ersten Eintrag. Sind Sie sicher, dass Sie alle diese Einträge benötigen? Wenn nicht - ändere zu 'open ('filename', 'wb')' – Andrey
Ja, ich brauche alle Einträge. Die Größe der Dateien zeigt, dass sie alles enthält. –
Dann ist @jsbueno in seiner Antwort richtig. – Andrey