Frage

Ich versuche, eine Binärdatei mit Python zu lesen.Dies ist der Code, den ich verwende:

fb = open(Bin_File, "r")
a = numpy.fromfile(fb, dtype=numpy.float32)

Am Ende des Arrays erhalte ich jedoch Nullwerte.Zum Beispiel für einen Fall, in dem nrows=296 Und ncol=439 und als Ergebnis, len(a)=296*439, ich bekomme Nullwerte für a[-922:].Ich weiß, dass diese Werte noData (in diesem Beispiel -9999) aus einem vertrauenswürdigen Code in R sein sollten.Weiß jemand, warum ich diese unsinnigen Nullen bekomme?

P.S.:Ich bin mir nicht sicher, ob es etwas damit zu tun hat, aber len(a) Ist nrows*ncols+2!Ich muss diese beiden loswerden a = a[0:-2] damit ich sie mit in Zeilen und Spalten umforme a_reshape = a.reshape(nrows, ncols) Ich erhalte keine Fehlermeldung.

War es hilfreich?

Lösung

Wenn Sie eine Datei zum Lesen als Binärdatei öffnen, sollten Sie den Modus verwenden "rb" anstatt "r".

Hier einige Hintergrundinformationen zum Dokumente.Auf Linux-Rechnern benötigen Sie das nicht "b" aber es wird nicht schaden.Auf Windows-Rechnern müssen Sie verwenden "rb" für Binärdateien.

Beachten Sie auch, dass die beiden zusätzlichen Einträge, die Sie erhalten, ein häufiger Fehler/eine häufige Funktion bei Verwendung des „unformatierten“ binären Ausgabeformats von Fortran sind.Jede in diesem Modus gegebene Schreibanweisung erzeugt einen Datensatz, der von zwei 4-Byte-Blöcken umgeben ist.

Diese Blöcke stellen Ganzzahlen dar, die die Anzahl der Bytes im Block unformatierter Daten auflisten.Beispiel: [223] [223 Datenbytes] [223].

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top