我有大的(〜75MB)在映射networking驱动器上可用的腌制对象(例如:X:/folder1/large_pickled_item.pk)对象包含numpy数组+ python列表,并使用cPickle协议2
当我试图取消数据,我得到以下错误信息:
使用pickle:KeyError :(随机字符)
使用cPickle:IOError:[Errno 22]无效的参数
如果腌渍对象尺寸较小,或者将(较大)对象复制到本地驱动器并运行相同的脚本,则不会出现错误。
任何想法的问题在哪里? 这是一个python+泡菜问题或Windows股票的问题?
笔记:
示例堆栈跟踪:
在loadObject的文件“test.py”,第38行,obj = pickle.load(input)在加载返回Unpickler(file).load()的第1378行的文件“C:\ software \ python \ lib \ pickle.py”在加载dispatchkey KeyError:'〜'的文件“C:\ software \ python \ lib \ pickle.py”,第858行。
这是由于Windows错误 ,读取和写入大于64MB的网络文件不起作用。
我建议尝试https://stackoverflow.com/a/4228291/367273中提供的解决方法的镜像
如果这没有帮助,也许你可以创建一个文件对象的包装,将自动拆分每个大read()
成多个较小的读取,并将该包装到pickle模块?