У меня есть файл pickle, который был создан (я не знаю, как именно) в Python 2. Он предназначен для загрузки следующими строками Python 2, которые при использовании в Python 3 (неудивительно) не работают:
with open('filename','r') as f:
foo, bar = pickle.load(f)
Результат:
Кодек 'ascii' не может декодировать байт 0xc2 в позиции 1219: порядковый номер не в диапазоне (128)
Ручная проверка файла показывает, что он имеет кодировку utf-8, поэтому:
with open('filename','r', encoding='utf-8') as f:
foo, bar = pickle.load(f)
Результат:
TypeError: требуется объект, подобный байту, а не 'str'
С двоичной кодировкой:
with open('filename','rb', encoding='utf-8') as f:
foo, bar = pickle.load(f)
Результат:
ValueError: двоичный режим не принимает аргумент кодировки
Без двоичной кодировки:
with open('filename','rb') as f:
foo, bar = pickle.load(f)
Результат:
UnpicklingError: недопустимый ключ загрузки, ''.
Не поврежден ли этот файл выбора?Если нет, как я могу открыть эту вещь в Python 3?(Я просмотрел обширную коллекцию связанных вопросов и пока не нашел ничего, что работает.)
Наконец, обратите внимание, что оригинальный
импортирует cPickle в виде pickle
был заменен на
import _pickle as pickle