如何使用Windows操作系统从.pkl文件获取数据

时间:2017-11-16 21:44:21

标签: python python-3.x anaconda jupyter-notebook

我有一个.pkl文件,它可以在我的MAC OS中完美加载,但它不会在Windows机器中加载。我在anaconda上使用python 3。 这是我的代码:

  

数据=和pickle.load(开( “ydata1.pkl”, 'RB'))

错误:UnicodeDecodeError:'ascii'编解码器无法解码位置2295中的字节0xc3:序数不在范围内(128)

所以我尝试了这个:

  

数据=和pickle.load(开( “ydata1.pkl”, 'R'))

但我得到一个错误说:需要一个类似字节的对象,而不是'str'

有谁能告诉我哪里出错了?

1 个答案:

答案 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