Ich versuche, eine große Binärdatei (> 5 GB) mit os.open
, mmap
und from_buffer()
zu lesen.Öffnen zum Schreiben und Lesen einer großen Datei Python
Lauf fd = os.open(filePath, O_RDWR)
der Fehler OSError: [Errno 22] Invalid argument: H:\\xyz.wdp
ausgelöst. Ich erkannte, dass das Problem war, dass die Datei zu groß war, da die Verwendung ähnlicher, aber kleinerer Dateien, O_WRONLY
oder O_RDONLY
, funktionierte. Leider, wenn ich O_WRONLY
oder O_RDONLY
verwende, wird der Zugriff für from_buffer()
Funktion verweigert (TypeError: mmap can't modify a readonly memory map.
).
Mein Beispiel-Code ist:
class StructData(Structure):
_pack_ = 1
_fields_ = [('bin', c_ubyte)]
fd = os.open(filePath, os.O_RDWR)
mmap_file = mmap.mmap(fd, length=80, access=mmap.ACCESS_WRITE, offset=0)
d_array = StructData*80
data = d_array.from_buffer(mmap_file)
Können Sie mir helfen, dieses Problem zu beheben? Ich möchte hinzufügen, ich arbeite mit großen Dateien, und ich brauche es läuft sehr schnell, ich möchte vermeiden, struct.unpack
und so weiter zu verwenden.
Vielen Dank!
Wie wäre es [MCVE] (http: // Stackoverflow .com/hilfe/mcve)? –
Ohne weitere Informationen ist es sehr schwierig, Ihr Problem zu lösen. Es scheint jedoch, dass die filePath-Variable einen Syntaxfehler hat, also wenn Sie schreiben, was Sie darin speichern, wäre es sehr nützlich. – Jalo
Ich habe meine Frage mit einem Beispielcode aktualisiert – Pablo