当在一个程序中(使用搁置)序列化一个类时,如果没有以下错误,我将无法检索它:
File "\Python36_64\lib\shelve.py", line 111, in __getitem__
value = self.cache[key]
KeyError: 'foo'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "program.py", line 12, in <module>
bar = db['foo']
File "\Python36_64\lib\shelve.py", line 114, in __getitem__
value = Unpickler(f).load()
AttributeError: Can't get attribute 'bar' on <module '__main__' (built-in)>
这是我的初始化架子的代码。它编译为:
import shelve
class bar:
x = {}
db = shelve.open('file.dat')
db['foo'] = bar
我一直在尝试使用以下代码在另一个程序中检索类栏。这没有正确编译。:
import shelve
db = shelve.open('file.dat')
bar = db['foo']
最佳答案
您不能通过这样的腌制和解腌方法来存储类。当pickle
需要腌制一个类时,它仅记录该类的模块和名称,而不是内容。只能在相同模块定义了相同类的环境中才能取消腌制。
关于python - 尝试检索搁置的类时出现KeyError和AtrributeError-Python 3.6,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53529263/