scipy.io.FortranFile.

read_record#

FortranFile.read_record(*dtypes, **kwargs)[Quelle]#

Liest einen Datensatz eines gegebenen Typs aus der Datei.

Parameter:
*dtypesDatentypen, optional

Gibt die Größe und Endianness der Daten an.

Rückgabe:
datandarray

Ein 1-D-Array-Objekt.

Löst aus:
FortranEOFError

Um zu signalisieren, dass keine weiteren Datensätze verfügbar sind

FortranFormattingError

Um zu signalisieren, dass das Ende der Datei auf halbem Weg durch einen Datensatz erreicht wurde

Siehe auch

read_reals
read_ints

Hinweise

Wenn der Datensatz ein mehrdimensionales Array enthält, können Sie die Größe im dtype angeben. Zum Beispiel

INTEGER var(5,4)

kann gelesen werden mit

read_record('(4,5)i4').T

Beachten Sie, dass diese Funktion **nicht** davon ausgeht, dass die Dateidaten in Fortran-Spaltenreihenfolge vorliegen. Sie müssen daher (i) die Reihenfolge der Dimensionen beim Lesen vertauschen und (ii) das resultierende Array transponieren.

Alternativ können Sie die Daten als 1-D-Array lesen und die Reihenfolge selbst handhaben. Zum Beispiel

read_record('i4').reshape(5, 4, order='F')

Für Datensätze, die mehrere Variablen oder gemischte Typen enthalten (im Gegensatz zu einzelnen Skalar- oder Array-Typen), geben Sie diese als separate Argumente an

double precision :: a
integer :: b
write(1) a, b

record = f.read_record('<f4', '<i4')
a = record[0]  # first number
b = record[1]  # second number

und wenn eine der Variablen ein Array ist, kann die Form als drittes Element im relevanten dtype angegeben werden

double precision :: a
integer :: b(3,4)
write(1) a, b

record = f.read_record('<f4', np.dtype(('<i4', (4, 3))))
a = record[0]
b = record[1].T

NumPy unterstützt auch eine Kurzschreibweise für diese Art von Typ

record = f.read_record('<f4', '(3,3)<i4')