Sto cercando di salvare e caricare oggetti usando il pickle
modulo.
Per prima cosa dichiaro i miei oggetti:
>>> class Fruits:pass
...
>>> banana = Fruits()
>>> banana.color = 'yellow'
>>> banana.value = 30
Successivamente apro un file chiamato "Fruits.obj" (in precedenza ho creato un nuovo file .txt e ho rinominato "Fruits.obj"):
>>> import pickle
>>> filehandler = open(b"Fruits.obj","wb")
>>> pickle.dump(banana,filehandler)
Fatto ciò chiudo la mia sessione e ne inizio una nuova e metto la successiva (cercando di accedere all'oggetto che doveva essere salvato):
file = open("Fruits.obj",'r')
object_file = pickle.load(file)
Ma ho questo messaggio:
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
Non so cosa fare perché non capisco questo messaggio. Qualcuno sa come posso caricare il mio oggetto "banana"? Grazie!
EDIT: Come alcuni di voi hanno suggerito, ho messo:
>>> import pickle
>>> file = open("Fruits.obj",'rb')
Non ci sono stati problemi, ma il successivo che ho inserito è stato:
>>> object_file = pickle.load(file)
E ho un errore:
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