Unpickling large objects stored on network drives
我有大型(~75MB)腌制对象,这些对象在映射的网络驱动器上可用(例如:X:/folder1/large_pickled_item.pk)
这些对象包含numpy数组+ python列表,并使用cPickle,协议2进行pickle
当我尝试unpickle数据时,我收到以下错误消息:
使用泡菜:
KeyError :(随机字符)
使用cPickle:
IOError:[Errno 22]参数无效
如果腌制的物体尺寸较小,我不会得到错误,
或者如果我将(较大的)对象复制到本地驱动器并运行相同的脚本。
知道问题出在哪里?是python + pickle问题还是Windows共享问题?
笔记:
示例堆栈跟踪:
在getObject中的文件"test.py",第38行
obj = pickle.load(输入)
加载文件"C: software python lib pickle.py",第1378行
返回Unpickler(文件).load()
加载文件"C: software python lib pickle.py",第858行
dispatchkey
KeyError:'?'
解
这是由于Windows错误,因此以大于64MB的块读取和写入网络文件不起作用。
我建议尝试在https://stackoverflow.com/a/4228291/367273中提供的变通方法的镜像
如果这没有帮助,也许您可以为文件对象创建一个包装器,它会自动将每个大的