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