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
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')