read_record#
- FortranFile.read_record(*dtypes, **kwargs)[источник]#
Читает запись заданного типа из файла.
- Параметры:
- *dtypesdtypes, необязательный
Тип(ы) данных, определяющие размер и порядок байтов данных.
- Возвращает:
- данныеndarray
Одномерный объект массива.
- Вызывает:
- FortranEOFError
Чтобы сигнализировать, что больше нет доступных записей
- FortranFormattingError
Чтобы сигнализировать, что конец файла был достигнут в середине записи
Смотрите также
Примечания
Если запись содержит многомерный массив, вы можете указать размер в dtype. Например:
INTEGER var(5,4)
можно прочитать с помощью:
read_record('(4,5)i4').T
Обратите внимание, что эта функция не не предполагается, что данные файла находятся в порядке столбцов Fortran, поэтому вам нужно (i) поменять порядок размерностей при чтении и (ii) транспонировать полученный массив.
Альтернативно, вы можете прочитать данные как 1-D массив и обработать упорядочивание самостоятельно. Например:
read_record('i4').reshape(5, 4, order='F')
Для записей, содержащих несколько переменных или смешанные типы (в отличие от одиночных скалярных или массивных типов), передавайте их как отдельные аргументы:
double precision :: a integer :: b write(1) a, b record = f.read_record('
, ' ) a = record[0] # first number b = record[1] # second number и если любая из переменных является массивом, форма может быть указана как третий элемент в соответствующем dtype:
double precision :: a integer :: b(3,4) write(1) a, b record = f.read_record('
, np.dtype((' , (4, 3)))) a = record[0] b = record[1].T NumPy также поддерживает краткий синтаксис для этого типа:
record = f.read_record('
, '(3,3) )