Estoy tratando de guardar y cargar objetos usando el pickle
módulo.
Primero declaro mis objetos:
>>> class Fruits:pass
...
>>> banana = Fruits()
>>> banana.color = 'yellow'
>>> banana.value = 30
Después de eso, abro un archivo llamado 'Fruits.obj' (anteriormente creé un nuevo archivo .txt y cambié el nombre de 'Fruits.obj'):
>>> import pickle
>>> filehandler = open(b"Fruits.obj","wb")
>>> pickle.dump(banana,filehandler)
Luego de hacer esto cierro mi sesión y comencé una nueva y pongo la siguiente (tratando de acceder al objeto que se suponía que estaba guardado):
file = open("Fruits.obj",'r')
object_file = pickle.load(file)
Pero tengo este mensaje:
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
No sé qué hacer porque no entiendo este mensaje. ¿Alguien sabe cómo puedo cargar mi objeto 'banana'? ¡Gracias!
EDITAR: Como algunos de ustedes han sugerido, puse:
>>> import pickle
>>> file = open("Fruits.obj",'rb')
No hubo problema, pero el siguiente que puse fue:
>>> object_file = pickle.load(file)
Y tengo error:
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