-1

pickle モジュールを試して、その機能とユーティリティを学んでいます。この小さなコードを書きましたが、問題が発生しています。

import pickle
myfile = open("C:\\Users\\The Folder\\databin.txt", 'r+') #databin.txt is completely blank
class A:
    def __init__ (self):
        self.variable = 25
        self.random = 55
pickle.dump (A, myfile, -1) #HIGHEST_PROTOCOL 
pickle.load (myfile)

次に、次のエラーが表示されます。

 Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
pickle.load (myfile)
File "C:\Python27\lib\pickle.py", line 1378, in load
return Unpickler(file).load()
File "C:\Python27\lib\pickle.py", line 858, in load
dispatch[key](self)
KeyError: '\x00'
4

2 に答える 2

3

最初にファイルを閉じてから、再度開く必要があります。バイナリモードを使用してファイルを開きます。

最後になりましたが、pickleはクラス自体ではなく、クラスのインスタンスのみを格納できます。

filename = "C:\\Users\\The Folder\\databin.txt"
with open(filename, 'wb') as myfile:
    pickle.dump(A(), myfile, -1) #HIGHEST_PROTOCOL 
with open(filename, 'rb') as myfile:
    pickle.load(myfile)

withここでは、ファイルをコンテキスト マネージャーとして使用しました。スイートを終了すると、ファイルは自動的に閉じます。

于 2012-08-12T08:28:17.620 に答える