IOError: [Errno 22] Argumento inválido ao ler / gravar bytestring grande

Estou entendendo

IOError: [Errno 22] Invalid argument

quando tento escrever um bytestring grande para o disco comf.write(), Ondef foi aberto com o modowb.

Eu vi muitas pessoas on-line recebendo este erro ao usar uma unidade de rede do Windows, mas estou no OSX (10.7 quando eu originalmente fiz a pergunta, mas 10.8 agora, com um sistema de arquivos local HFS + padrão). Estou usando o Python 3.2.2 (acontece em um binário python.org e em uma instalação homebrew). Eu não vejo esse problema com o sistema Python 2.7.2.

Eu também tentei o modow+b baseado emesta solução alternativa de bugs do Windows, mas é claro que isso não ajudou.

Os dados são provenientes de uma grande matriz numpy (quase 4 GB de floats). Ele funciona bem se eu passar o loop manualmente e escrevê-lo em partes. Mas porque eu não posso escrever tudo de uma só vez,np.save enp.savez falhar - já que eles apenas usamf.write(ary.tostring()). Eu recebo um erro semelhante quando tento salvá-lo em um arquivo HDF5 existente comh5py.

Note que eu recebo o mesmo problema ao ler um arquivo aberto comfile(filename, 'rb'): f.read() dá issoIOError, enquantof.read(chunk_size) por razoávelchunk_size trabalho.

Alguma ideia?

questionAnswers(2)

yourAnswerToTheQuestion