J'essaye de sauvegarder et de charger des objets en utilisant le pickle
module.
Je déclare d'abord mes objets:
>>> class Fruits:pass
...
>>> banana = Fruits()
>>> banana.color = 'yellow'
>>> banana.value = 30
Après cela, j'ouvre un fichier appelé 'Fruits.obj' (auparavant, j'ai créé un nouveau fichier .txt et j'ai renommé 'Fruits.obj'):
>>> import pickle
>>> filehandler = open(b"Fruits.obj","wb")
>>> pickle.dump(banana,filehandler)
Après cela, je ferme ma session et j'en ai commencé une nouvelle et j'ai mis la suivante (en essayant d'accéder à l'objet qu'elle supposait être sauvé):
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!
EDIT: Comme certains d'entre vous l'ont suggéré, j'ai mis:
>>> import pickle
>>> file = open("Fruits.obj",'rb')
Il n'y a pas eu de problème, mais le prochain que j'ai mis é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