Estou tentando salvar e carregar objetos usando o pickle
módulo.
Primeiro eu declaro meus objetos:
>>> class Fruits:pass
...
>>> banana = Fruits()
>>> banana.color = 'yellow'
>>> banana.value = 30
Depois disso, abro um arquivo chamado 'Fruits.obj' (anteriormente, criei um novo arquivo .txt e renomeei 'Fruits.obj'):
>>> import pickle
>>> filehandler = open(b"Fruits.obj","wb")
>>> pickle.dump(banana,filehandler)
Depois disso fecho minha sessão e inicio uma nova e coloco a seguinte (tentando acessar o objeto que deveria ser salvo):
file = open("Fruits.obj",'r')
object_file = pickle.load(file)
Mas eu tenho esta mensagem:
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
Não sei o que fazer porque não entendo esta mensagem. Alguém sabe como posso carregar meu objeto 'banana'? Obrigado!
EDIT: Como alguns de vocês sugeriram eu coloco:
>>> import pickle
>>> file = open("Fruits.obj",'rb')
Não houve problema, mas o próximo que coloquei foi:
>>> object_file = pickle.load(file)
E eu tenho erro:
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