2016-08-27 3 views
2

Мой код:десериализация файл "рассол"

import _pickle 
with open('items_10000_matrix.pickle', 'rb') as f: 
    data_new = _pickle.load(f) 

Но возникает ошибка:

UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 212: ordinal not in range(128) 

Я использую Windows 10 + питона 3.5 с VS инструменты для питона.

+2

Вы говорите, что сделать «import pickle» не удается - как именно он терпит неудачу? Вам не нужно/нужно использовать '_pickle' ... –

+0

@NinjaPuppy Извините, это еще не сработало, это были только мои манипуляции с превиусом ... –

+0

@martineau Извините, но: ** байтовый объект требуется, а не «str» ** –

ответ

0

Мне сказали использовать python 2 вместо python 3, и это сработало. Все еще не знаю решение для python3

0

Попробуйте использовать _pickle.load(f, encoding='bytes').

Кстати, в Python 3 нет причин явно импортировать _pickle, а не pickle, потому что он автоматически переключится на версию C, если он доступен. См. Принятый ответ на вопрос What difference between pickle and _pickle in python 3?

+0

Владислав: Я чувствую, что непризнание моего ответа было немного несправедливым. Возможно, я предложил перейти на Python 2, если вы явно не заявили, что используете python 3.5 (и пометили свой вопрос Python-3.x). Также довольно необычно, когда кто-то может легко переключаться с одного на другого именно так. – martineau

Смежные вопросы