我正在
IOError: [Errno 22] Invalid argument
当我尝试使用f.write()
将大字节字符串写入磁盘时,其中f
以模式wb
打开。
我在网上看到很多人在使用Windows网络驱动器时遇到此错误,但我在OSX上(当我最初提问时为10.7但现在是10.8,使用标准的HFS +本地文件系统)。我正在使用Python 3.2.2(发生在python.org二进制文件和自制软件安装)。我没有看到系统Python 2.7.2的这个问题。
我还尝试了基于this Windows bug workaround的模式w+b
,但当然没有帮助。
数据来自一个大的numpy数组(几乎4GB的浮点数)。如果我手动循环字符串并以块的形式写出它,它工作正常。但是因为我不能一次性写出来,np.save
和np.savez
失败 - 因为他们只使用f.write(ary.tostring())
。当我尝试将其保存到具有h5py
的现有HDF5文件时,我收到类似的错误。
请注意,在阅读使用file(filename, 'rb')
打开的文件时,我遇到了同样的问题:f.read()
为IOError
提供了此f.read(chunk_size)
,chunk_size
表示合理的{{1}}有效。
有什么想法吗?
答案 0 :(得分:7)
这似乎是fread / fwrite的一般OSX错误,因此Python用户无法解决这个问题。请参阅numpy #3858,this torch7 commit,this SO question/answer,....
据说小牛队已经修好了,但我仍然看到了这个问题。
Python 2可能解决了这个问题,或者它的io模块可能总是缓冲大量读/写;我没有彻底调查过。
答案 1 :(得分:-2)
也许尝试不用b标志打开,我不认为所有OS /文件系统都支持。