scipy.io.FortranFile.

read_record#

FortranFile.read_record(*dtypes, **kwargs)[источник]#

Читает запись заданного типа из файла.

Параметры:
*dtypesdtypes, необязательный

Тип(ы) данных, определяющие размер и порядок байтов данных.

Возвращает:
данныеndarray

Одномерный объект массива.

Вызывает:
FortranEOFError

Чтобы сигнализировать, что больше нет доступных записей

FortranFormattingError

Чтобы сигнализировать, что конец файла был достигнут в середине записи

Смотрите также

read_reals
read_ints

Примечания

Если запись содержит многомерный массив, вы можете указать размер в 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))