IOError: [Errno 22] Ungültiges Argument beim Lesen / Schreiben eines großen Bytestrings

Ich erhalte

IOError: [Errno 22] Invalid argument

wenn ich versuche einen großen bytestring auf festplatte zu schreiben mitf.write(), woherf wurde mit mode geöffnetwb.

Ich habe viele Leute online gesehen, die diesen Fehler hatten, wenn sie ein Windows-Netzwerklaufwerk verwendeten, aber ich arbeite unter OSX (10.7, als ich die Frage ursprünglich stellte, jetzt jedoch 10.8, mit einem lokalen Standard-HFS + -Dateisystem). Ich verwende Python 3.2.2 (tritt sowohl bei einer Python.org-Binär- als auch einer Homebrew-Installation auf). Ich sehe dieses Problem nicht mit dem System Python 2.7.2.

Ich habe auch versucht Modusw+b beyogen aufdiese Windows-Fehlerumgehung, aber das hat natürlich nicht geholfen.

Die Daten stammen von einem großen Numpy-Array (fast 4 GB Float). Es funktioniert einwandfrei, wenn ich die Zeichenfolge manuell durchschleife und sie in Stücken ausschreibe. Aber weil ich nicht alles in einem Durchgang schreiben kann,np.save undnp.savez scheitern - da nutzen sie einfachf.write(ary.tostring()). Ich erhalte eine ähnliche Fehlermeldung, wenn ich versuche, sie mit in einer vorhandenen HDF5-Datei zu speichernh5py.

Beachten Sie, dass beim Lesen einer mit geöffneten Datei das gleiche Problem auftrittfile(filename, 'rb'): f.read() gibt diesIOErrorwährendf.read(chunk_size) zum vernünftigenchunk_size funktioniert.

Irgendwelche Gedanken?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage