Подтвердить что ты не робот

ValueError: неподдерживаемый протокол pickle: 3, python2 pickle не может загрузить файл, сбрасываемый python 3 pickle?

Я использую pickle для дампа файла на python 3, и я использую pickle для загрузки файла на python 2, появляется ValueError.

Итак, python 2 pickle не может загрузить файл, сбрасываемый python 3 pickle?

Если я хочу? Как это сделать?

4b9b3361

Ответ 1

Вы должны написать маринованные данные с более низким номером протокола в Python 3. Python 3 представил новый протокол с номером 3 (и использует его по умолчанию), поэтому вернитесь к значению 2, которое может читать Python 2.

Проверьте параметр protocol в pickle.dump. Полученный вами код будет выглядеть следующим образом.

pickle.dump(your_object, your_file, protocol=2)

В pickle.load нет параметра protocol, потому что pickle может определить протокол из файла.

Ответ 2

Pickle использует разные protocols для преобразования ваших данных в двоичный поток.

Вы должны указать в python 3 протокол ниже 3, чтобы иметь возможность загружать данные в python 2. Вы можете указать параметр protocol при вызове pickle.dump.