проблема с загрузкой файла автовивификации при переходе с python 2.7 на 3.6, KeyError: 'DictType' - PullRequest
0 голосов
/ 11 февраля 2019

В Python 2.7 у меня есть куча файлов, хранящихся как следующий объект:

class AutoVivification(dict):
    """Implementation of perl's autovivification feature."""

    def __getitem__(self, item):
        try:
            return dict.__getitem__(self, item)
        except KeyError:
            value = self[item] = type(self)()
            return value

Это из Каков наилучший способ реализации вложенных словарей? .

У меня их маринованные, и я могу нормально их загружать.Но в python 3.6 это выдает мне следующую ошибку при попытке загрузить тот же файл.

Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.1\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec
    exec(exp, global_vars, local_vars)
  File "<string>", line 2, in <module>
  File "C:\Python36\lib\site-packages\dill\_dill.py", line 577, in _load_type
    return _reverse_typemap[name]
KeyError: 'DictType'

Я использую следующую строку кода для загрузки объекта:

with open('data.pkl', 'rb') as f:
    return pickle.load(f)

Как мне использовать Python 3.6 для загрузки файла?

...