ValueError: неподдерживаемый протокол pickle: 3, python2 pickle не может загрузить файл, сбрасываемый python 3 pickle?
Я использую pickle для дампа файла на python 3, и я использую pickle для загрузки файла на python 2, появляется ValueError.
Итак, python 2 pickle не может загрузить файл, сбрасываемый python 3 pickle?
Если я хочу? Как это сделать?
Ответы
Ответ 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
.