我有一个由嵌套的内置原语(列表,字典)和不在项目中的类的实例组成的pickled结构,因此在取出过程中会导致错误。我并不关心这些对象,我希望能够提取存储在这个嵌套结构中的数值。有没有办法从文件中取消选中,并替换因导入问题导致的所有内容,例如None
?如何在pickle加载过程中将导致导入错误的对象替换为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
@roganjosh结构(清单的词典列表)被腌制了一段时间,从那以后代码库发生了显着变化;现在如果我试图取消它,我面临导入错误,因为没有像那里使用的类,虽然我不需要存储在那里的对象,即使只有数值和字符串,我也会很好;所以,是的,广泛的问题是,我不能undeckle它 –