【发布时间】:2017-10-20 21:30:43
【问题描述】:
我有一个腌制结构,由嵌套的内置原语(列表、字典)和不再在项目中的类的实例组成,因此会在取消腌制期间导致错误。我并不真正关心这些对象,我希望我可以提取存储在这个嵌套结构中的数值。有什么方法可以从文件中提取并替换由于导入问题而损坏的所有内容,比如None?
如果找不到类,我试图从Unpickler 继承并覆盖find_class(self, module, name) 以返回Dummy,但由于某种原因,之后我在load reduce 中不断收到TypeError: 'NoneType' object is not callable。
class Dummy(object):
def __init__(self, *argv, **kwargs):
pass
我尝试了类似的东西
class RobustJoblibUnpickle(Unpickler):
def find_class(self, _module, name):
try:
super(RobustJoblibUnpickle, self).find_class(_module, name)
except ImportError:
return Dummy
【问题讨论】:
-
你是说你可以腌制一个对象但不能解开它?这里更广泛的任务是什么?
-
@roganjosh 该结构(列表的字典列表..)在不久前被腌制,此后代码库发生了显着变化;现在,如果我尝试解开它,我将面临导入错误,因为没有像那里使用的类,尽管我不需要存储在那里的对象,即使只有数值和字符串我也可以;所以,是的,广泛的问题是我无法解开它
标签: python pickle python-import built-in