Próbuję zapisywać i ładować obiekty za pomocą pickle
modułu.
Najpierw deklaruję moje obiekty:
>>> class Fruits:pass
...
>>> banana = Fruits()
>>> banana.color = 'yellow'
>>> banana.value = 30
Następnie otwieram plik o nazwie „Fruits.obj” (wcześniej utworzyłem nowy plik .txt i zmieniłem nazwę „Fruits.obj”):
>>> import pickle
>>> filehandler = open(b"Fruits.obj","wb")
>>> pickle.dump(banana,filehandler)
Po wykonaniu tej czynności zamykam sesję i rozpoczynam nową i stawiam następną (próbując uzyskać dostęp do obiektu, który ma być zapisany):
file = open("Fruits.obj",'r')
object_file = pickle.load(file)
Ale mam taką wiadomość:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python31\lib\pickle.py", line 1365, in load
encoding=encoding, errors=errors).load()
ValueError: read() from the underlying stream did notreturn bytes
Nie wiem, co robić, ponieważ nie rozumiem tej wiadomości. Czy ktoś wie, jak mogę załadować mój obiekt „banan”? Dziękuję Ci!
EDYCJA: Jak niektórzy z was sugerowali, umieściłem:
>>> import pickle
>>> file = open("Fruits.obj",'rb')
Nie było problemu, ale następny włożyłem to:
>>> object_file = pickle.load(file)
I mam błąd:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python31\lib\pickle.py", line 1365, in load
encoding=encoding, errors=errors).load()
EOFError