J'ai une structure décapée composée de primitives intégrées imbriquées (liste, dictionnaires) et d'instances de classes qui ne sont plus dans le projet, qui provoquent donc des erreurs lors du décyptage. Je ne me soucie pas vraiment de ces objets, j'aimerais pouvoir extraire des valeurs numériques stockées dans cette structure imbriquée. Existe-t-il un moyen de décoller un fichier et de remplacer tout ce qui a été cassé en raison de problèmes d'importation avec, disons, None
?Comment remplacer des objets provoquant des erreurs d'importation par None pendant la charge de pickle?
je tentais d'hériter de Unpickler
et passer outre find_class(self, module, name)
retourner Dummy
si la classe ne peut pas être trouvé, mais pour une raison que je continue à me TypeError: 'NoneType' object is not callable
dans load reduce
après.
class Dummy(object):
def __init__(self, *argv, **kwargs):
pass
J'ai essayé quelque chose comme
class RobustJoblibUnpickle(Unpickler):
def find_class(self, _module, name):
try:
super(RobustJoblibUnpickle, self).find_class(_module, name)
except ImportError:
return Dummy
Voulez-vous dire que vous pourriez pickle un objet mais ne le décuple pas? Quelle est la tâche plus large ici? – roganjosh
@roganjosh cette structure (listes de dicts de listes ..) a été décapée il y a un certain temps et la base de code a changé de façon significative depuis; Maintenant, si j'essaye de le décocher, je suis confronté à des erreurs d'importation, car il n'y a pas de classes comme celles-là, bien que je n'aie pas besoin d'objets stockés ici, ça irait même avec des valeurs numériques et des chaînes seulement; donc, oui, le grand problème est que je ne peux pas le décoder –