Python 在mac中加载在linux中pickle的数据失败
我正在Linux机器上保存一个python数据集,其中包含一个类以及引用的字典和类。文件通常在Windows或Linux上加载,但在mac上,如果使用“rb”修饰符加载,则会出现以下错误:Python 在mac中加载在linux中pickle的数据失败,python,linux,macos,pandas,pickle,Python,Linux,Macos,Pandas,Pickle,我正在Linux机器上保存一个python数据集,其中包含一个类以及引用的字典和类。文件通常在Windows或Linux上加载,但在mac上,如果使用“rb”修饰符加载,则会出现以下错误: File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1378, in load return Unpickler(file).load() File "/System/Lib
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1378, in load
return Unpickler(file).load()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 858, in load
dispatch[key](self)
KeyError: '\x00'
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1378, in load
return Unpickler(file).load()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 858, in load
dispatch[key](self)
KeyError: '\x06
如果使用“rU”修饰符加载,则会出现此错误:
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1378, in load
return Unpickler(file).load()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 858, in load
dispatch[key](self)
KeyError: '\x00'
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1378, in load
return Unpickler(file).load()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 858, in load
dispatch[key](self)
KeyError: '\x06
尝试用pickle、cPickle和dill保存和加载,所有结果相似
更新:
在linux中保存和加载mac大熊猫数据帧时,我遇到了这个确切的错误:
import pandas as pd
import numpy as np
pd.DataFrame(np.random.randn(100000,5)).to_pickle("1.dat")
尝试使用以下代码打开1.dat im mac时,会再次出现错误:
pd.read_pickle("1.dat")
问题解决了
这是在mac中安装网络linux驱动器后引起的,这导致在传输的每个大数据块的末尾插入一个空字符,从而导致错误。您在Windows、linux中使用哪一版本的Python?都使用Python 2.7.8、cPickle v1.71、,pickle修订版72223您能否给出一个可能减少的示例,说明您正在进行的酸洗会再现错误?这样人们就可以很容易地尝试它。出现此错误时,文件已正确关闭。我正在pickle的类包含三个字典,其中键是字符串,值是不从对象继承的类。母类有一个保存方法,看起来像:
defsave(self,filename):open(filename,'wb')作为fh:cPickle.dump(self,fh)
@Korem:python文件的句柄在不同的操作系统上表现不同。因此,在没有看到代码的情况下,这是一个有效的问题。