pickle
モジュールを使用してオブジェクトを保存およびロードしようとしています。
まず、オブジェクトを宣言します。
>>> class Fruits:pass
...
>>> banana = Fruits()
>>> banana.color = 'yellow'
>>> banana.value = 30
その後、「Fruits.obj」というファイルを開きます(以前に新しい.txtファイルを作成し、「Fruits.obj」に名前を変更しました)。
>>> import pickle
>>> filehandler = open(b"Fruits.obj","wb")
>>> pickle.dump(banana,filehandler)
これを行った後、セッションを閉じて新しいセッションを開始し、次のセッションを保存します(保存されるはずのオブジェクトにアクセスしようとします)。
file = open("Fruits.obj",'r')
object_file = pickle.load(file)
しかし、私はこのメッセージを持っています:
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
このメッセージがわからないのでどうすればいいのかわかりません。オブジェクト「バナナ」をロードする方法を誰かが知っていますか?ありがとうございました!
編集: あなたの一部が私が入れたと主張したように:
>>> import pickle
>>> file = open("Fruits.obj",'rb')
問題はありませんでしたが、次は
>>> object_file = pickle.load(file)
そして私はエラーがあります:
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