Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在mac中加载在linux中pickle的数据失败_Python_Linux_Macos_Pandas_Pickle - Fatal编程技术网

Python 在mac中加载在linux中pickle的数据失败

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

我正在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/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文件的句柄在不同的操作系统上表现不同。因此,在没有看到代码的情况下,这是一个有效的问题。