我有一个.pkl文件,它可以在我的MAC OS中完美加载,但它不会在Windows机器中加载。我在anaconda上使用python 3。 这是我的代码:
数据=和pickle.load(开( “ydata1.pkl”, 'RB'))
错误:UnicodeDecodeError:'ascii'编解码器无法解码位置2295中的字节0xc3:序数不在范围内(128)
所以我尝试了这个:
数据=和pickle.load(开( “ydata1.pkl”, 'R'))
但我得到一个错误说:需要一个类似字节的对象,而不是'str'
有谁能告诉我哪里出错了?
答案 0 :(得分:1)
使用open()
模式rb:
import pickle
with open('ydata1.pkl', 'rb') as p_f:
data = pickle.load(p_f)
取自文件:https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files
在Windows上,附加到模式的'b'以二进制模式打开文件,所以 还有'rb','wb'和'r + b'等模式。 Windows上的Python 区分文本和二进制文件;行尾 文本文件中的字符会在数据时自动更改 被读或写。这种对文件数据的幕后修改 适用于ASCII文本文件,但它会破坏这样的二进制数据 在JPEG或EXE文件中。阅读时要非常小心使用二进制模式 并写这样的文件。在Unix上,附加'b'并没有什么坏处 模式,所以你可以平台独立使用它为所有二进制文件 文件。
还要确保您没有Python 2 / Python 3 pickle兼容性问题:Pickle incompatibility of numpy arrays between Python 2 and 3