我使用cPickle来序列化和反序列化类的实例。我最近将一些类移到了不同的包中,现在我注意到cPickle/pickle存储了类名和它来自的包
>>> class A(object):
pass
>>> dumps(A())
'ccopy_reg\n_reconstructor\np1\n(c__main__\nA\np2\nc__builtin__\nobject\np3\nNtRp4\n.'
注意__main__
是如何存储的,因为我在主python解释器中运行了该代码
如果我尝试用这种方式取消拾取存储的许多对象,我会得到一个ImportError
的抱怨,因为我移动了这些类,所以旧类不存在于预期的位置
我没有更改__getstate__
或__setstate__
的格式。我只更改了需要反序列化的类的位置。有没有办法迁移这些对象,这样我就不会遇到问题
如果要迁移数据,必须在旧位置提供对新对象的引用,然后再次转储数据:
现在,
pickle_data
包含对new_location.A
的引用相关问题 更多 >
编程相关推荐