J'essaie d'enregistrer et de charger des objets à l'aide de pickle
module.
Je commence par déclarer mes objets :
>>> class Fruits:pass
...
>>> banana = Fruits()
>>> banana.color = 'yellow'
>>> banana.value = 30
Ensuite, j'ouvre un fichier appelé 'Fruits.obj' (auparavant, j'ai créé un nouveau fichier .txt que j'ai renommé 'Fruits.obj') :
>>> import pickle
>>> filehandler = open(b"Fruits.obj","wb")
>>> pickle.dump(banana,filehandler)
Après avoir fait cela, je ferme ma session et j'en commence une nouvelle et je mets la suivante (en essayant d'accéder à l'objet qui est censé être sauvegardé) :
file = open("Fruits.obj",'r')
object_file = pickle.load(file)
Mais j'ai ce message :
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
Je ne sais pas quoi faire car je ne comprends pas ce message. Quelqu'un sait-il comment je peux charger mon objet 'banane' ? Je vous remercie de votre attention.
EDITAR: Comme certains d'entre vous l'ont suggéré, j'ai mis :
>>> import pickle
>>> file = open("Fruits.obj",'rb')
Il n'y avait pas de problème, mais le prochain que j'ai mis l'était :
>>> object_file = pickle.load(file)
Et j'ai une erreur :
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