Bad Pickle получить ошибку - PullRequest
0 голосов
/ 29 марта 2009

Я использую программу флэш-карты под названием Mnemosyne, которая использует скрипт Python. Некоторое время назад моя база данных флэш-карт стала недоступной после того, как мой компьютер завис, и мне пришлось выключить ее вручную. Всякий раз, когда я пытаюсь загрузить базу данных, содержащую мои карты, я получаю эту ошибку.

Invalid file format 
Traceback(innermost last): 
File "mnemosyne\core\mnemosyne_core.pyc", line 1012, in load_database 
BadPickleGet: 577"

Помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 30 марта 2009

(Хотя копия CLayton может быть бинарным дистрибутивом, источник для mnemosyne находится в свободном доступе.)

Это не очень помогает, хотя: строка 1012 просто:

db = cPickle.load(infile)

Где «infile» - это файл сохраненной базы данных. Так что в вашей базе данных есть что-то поврежденное. (BadPickleGet - это особый подкласс UnpicklingError, который вы ожидаете, когда ввод не работает.)

Вы можете изменить mnemosyne_core.py, чтобы использовать простой модуль Python для pickle вместо cPickle, что позволит вам добавить отладку в pickle.py и точно определить, что находится в файле, который ему не нравится. Но, честно говоря, если файл был поврежден из-за аппаратного сбоя / жесткого отключения питания, есть вероятность, что его содержимое будет усечено, нечитаемо или будет просто мусором.

Приготовьтесь снова и снова просматривать эти ранние карты ...

...