Poniżej znajduje się przykład, w jaki sposób można napisać i przeczytać plik pikle. Zauważ, że jeśli będziesz nadal dołączał dane pikle do pliku, będziesz musiał kontynuować czytanie z pliku, dopóki nie znajdziesz tego, co chcesz, lub nie wygenerujesz wyjątku, docierając do końca pliku. Tak właśnie działa ostatnia funkcja.
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()
Dołączasz obiekty do swojego pliku. Po rozpakowaniu odszyfrujesz tylko pierwszy wpis. Czy na pewno potrzebujesz tych wszystkich wpisów? Jeśli nie - zmień na 'open ('filename', 'wb')' – Andrey
Tak, potrzebuję wszystkich wpisów. Rozmiar plików pokazuje, że zawiera wszystko. –
Następnie @jsbueno ma rację w swojej odpowiedzi. – Andrey