필자는 중첩 된 기본 제공 프리미티브 (목록, 사전)와 더 이상 프로젝트에없는 클래스의 인스턴스로 구성되어 피클링되지 않는 동안 오류를 일으키는 피클링 된 구조를가집니다. 나는 그 객체들을 정말로 신경 쓰지 않는다. 나는이 중첩 된 구조체에 저장된 수치 값들을 추출 할 수 있었으면 좋겠다. 파일에서 unpickle을 수행하고 가져 오기 문제로 인해 손상된 모든 것을 바꿀 수있는 방법이 있습니까? None
? 피클로드 중에 가져 오기 오류를 일으키는 개체를 없음으로 바꾸는 방법은 무엇입니까?
Unpickler
에서 상속 클래스가 발견되지 않는 경우는
Dummy
을 반환
find_class(self, module, name)
을 무시하려고했지만, 어떤 이유로 그 후
load reduce
에
TypeError: 'NoneType' object is not callable
가 계속.
class Dummy(object):
def __init__(self, *argv, **kwargs):
pass
나는 어쩌면 당신이 try
블록에서 예외를 catch하고, 당신이 원하는 무엇을 할 수
class RobustJoblibUnpickle(Unpickler):
def find_class(self, _module, name):
try:
super(RobustJoblibUnpickle, self).find_class(_module, name)
except ImportError:
return Dummy
당신은 당신이 할 수 건가요 피클하지만 피클하지 마라? 여기에 더 광범위한 작업이 무엇입니까? – roganjosh
@roganjosh 그 구조 (목록의 dicts의 목록)은 오래 전에 절인되었으며 코드베이스는 그 이후 크게 변경되었습니다. 지금 내가 그것을 unpickle하려고하는 경우 거기에 사용되는 것과 같은 클래스가 없기 때문에 가져 오기 오류가 발생합니다. 거기에 객체가 저장 될 필요는 없지만 숫자 값과 문자열만으로도 괜찮습니다. 예, 넓은 문제는 내가 그것을 unpickle 할 수 없다는 것입니다. –