Я получаю
IOError: [Errno 22] Invalid argument
когда я пытаюсь написать большую байтовую строку на диск с f.write()
, где f
был открыт с помощью режима wb
.
Я видел много людей в Интернете, которые получали эту ошибку при использовании сетевого диска Windows, но я на OSX (10.7, когда я изначально задал вопрос, но теперь 10.8, со стандартной локальной файловой системой HFS +). Я использую Python 3.2.2 (происходит как в двоичном файле python.org, так и при установке homebrew). Я не вижу этой проблемы с системой Python 2.7.2.
Я также пробовал режим w+b
на основе обходной обходной ошибки Windows, но, конечно, это не помогло.
Данные поступают из большого массива numpy (почти 4 ГБ поплавков). Он отлично работает, если я вручную перебираю строку и записываю ее в виде кусков. Но поскольку я не могу написать все за один проход, np.save
и np.savez
fail - поскольку они просто используют f.write(ary.tostring())
. Я получаю аналогичную ошибку, когда я пытаюсь сохранить ее в существующий файл HDF5 с помощью h5py
.
Обратите внимание, что я получаю ту же проблему при чтении файла, открытого с помощью file(filename, 'rb')
: f.read()
, дает этот IOError
, а f.read(chunk_size)
для разумного chunk_size
работает.
Любые мысли?