IOError: [Errno 22] Недопустимый аргумент при чтении / записи большой строки байтов
Я получаю
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.
Я тоже пробовал режимw+b
основанный наэтот обход ошибки Windows, но, конечно, это не помогло.
Данные поступают из большого массива (почти 4 ГБ с плавающей запятой). Это работает нормально, если я вручную зацикливаю строку и записываю ее кусками. Но поскольку я не могу написать все это за один проход,np.save
а такжеnp.savez
потерпеть неудачу - так как они просто используютf.write(ary.tostring())
, Я получаю похожую ошибку, когда пытаюсь сохранить ее в существующий файл HDF5 сh5py
.
Обратите внимание, что я получаю ту же проблему при чтении файла, открытого сfile(filename, 'rb')
: f.read()
дает этоIOError
, в то время какf.read(chunk_size)
для разумногоchunk_size
работает.
Какие-нибудь мысли?