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 diesIOError
währendf.read(chunk_size)
zum vernünftigenchunk_size
funktioniert.
Irgendwelche Gedanken?