Я получаю
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 работает.
Любые мысли?