IOError:[Errno 22]读/写大字节串时的参数无效

Dou*_*gal 11 python macos python-3.x

我越来越

IOError: [Errno 22] Invalid argument
Run Code Online (Sandbox Code Playgroud)

当我尝试将大字节字符串写入磁盘时f.write(),其中f以模式打开wb.

我在网上看到很多人在使用Windows网络驱动器时遇到此错误,但是我在OSX上(当我最初提问时为10.7,但现在是10.8,使用标准的HFS +本地文件系统).我正在使用Python 3.2.2(发生在python.org二进制文件和自制软件安装).我没有看到系统Python 2.7.2的这个问题.

我也试过w+b基于这个Windows bug解决方法的模式,但当然这没有用.

数据来自一个大的numpy数组(几乎4GB的浮点数).如果我手动循环字符串并以块的形式写出它,它工作正常.但是因为我不能一次性写出所有内容np.savenp.savez失败 - 因为他们只是使用了f.write(ary.tostring()).当我尝试将其保存到现有的HDF5文件时,我收到类似的错误h5py.

请注意,在阅读打开的文件时遇到同样的问题file(filename, 'rb'):f.read()给出这个IOError,同时f.read(chunk_size)为了合理的chunk_size工作.

有什么想法吗?

Dou*_*gal 7

这似乎是fread/fwrite的一般OSX错误,所以Python用户无法真正解决这个问题.看到numpy#3858,这个火炬7提交,这个问题/答案,....

据说它已在小牛队中得到修复,但我仍然看到了这个问题.

Python 2可能已经解决了这个问题,或者它的io模块可能总是缓冲大量读/写; 我没有彻底调查过.