Ich möchte eine Binärdatei in Python lesen, deren genaues Layout in der Binärdatei selbst gespeichert ist.Wie kann ich aufeinanderfolgende Arrays aus einer Binärdatei mit `np.fromfile` lesen?
Die Datei enthält eine Sequenz von zweidimensionalen Arrays, wobei die Zeilen- und Spaltenabmessungen jedes Arrays als ein Paar Ganzzahlen vor dem Inhalt gespeichert sind. Ich möchte nacheinander alle in der Datei enthaltenen Arrays lesen.
Ich weiß, dass dies mit f = open("myfile", "rb")
und f.read(numberofbytes)
getan werden kann, aber das ist ziemlich ungeschickt, weil ich dann die Ausgabe in sinnvolle Datenstrukturen konvertieren müsste. Ich möchte numpy np.fromfile
mit einer benutzerdefinierten dtype
verwenden, aber habe keine Möglichkeit gefunden, einen Teil der Datei zu lesen, lassen Sie es geöffnet, und dann weiterlesen mit einer modifizierten dtype
.
Ich weiß, ich kann os
zu f.seek(numberofbytes, os.SEEK_SET)
und np.fromfile
mehrere Male verwenden, aber das würde bedeuten, viel unnötiges Herumspringen in der Datei.
Kurz gesagt, ich will fread
(oder zumindest so etwas wie C++ ifstream
read
) die MATLAB.
Was ist der beste Weg, dies zu tun?
Können Sie das Dateiformat beschreiben? Es ist schwierig, einen bestimmten Ansatz zu empfehlen, ohne etwas über die Datei selbst zu wissen. –
es ist eine rohe Binärdatei, es enthält Matrizen als Doppel aus einem C++ - Programm, und Ganzzahlen, die die Größe der Matrizen beschreiben – jacob
Enthält eine einzelne Datei mehrere Arrays oder gibt es nur ein Array pro Datei? Sind die Array-Dimensionen in einer Kopfzeile am Anfang der Datei angegeben? Kannst du den Header beschreiben? –