Я хочу сохранить объект Python, который содержит несколько numpy
массивов в файле. Я нашел pickle
, но я всегда получаю UnicodeDecodeError
при загрузке сохраненного объекта:Pickle UnicodeDecodeError
Traceback (most recent call last):
File "system.py", line 46, in <module>
m2 = System.loadMemory('m1.pickle')
File "system.py", line 28, in loadMemory
memory = pickle.load(filehandler)
File "/home/daniel-u1/anaconda3/lib/python3.5/codecs.py", line 321, in
decode (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
Метод saveMemory
работает отлично, но loadMemory
бросает ошибку в pickle.load
:
@staticmethod
def saveMemory(m1, filename):
filehandler = open(filename, 'wb')
pickle.dump(m1, filehandler)
@staticmethod
def loadMemory(filename):
filehandler = open(filename, 'r')
memory = pickle.load(filehandler)
return memory
кто-нибудь представление о том, решить эту проблему?
Почему вы записываете файл в двоичном режиме и читаете в текстовом режиме? – user2357112
Другими словами, используйте 'open (filename, 'rb')', чтобы открыть файл в 'loadMemory()'. – martineau
@martineau Большое спасибо, это была вещь. Не могли бы вы ответить в отдельном сообщении, чтобы я мог отметить это как решение? – 111