Как прочитать 1-битные неформатированные двоичные данные Fortran?

#python #binary #fortran

#python #двоичный #fortran

Вопрос:

Я хочу прочитать выходной файл числовой модели на Python. Этот выходной файл модели является неформатированным выходным файлом Fortran.

Итак, для чтения на Fortran

 OPEN(10, FILE=FILE_NAME, STATUS="OLD", ACCESS="DIRECT", FORM="UNFORMATTED", RECL=NX*NY, CONVERT="big_endian")
  

а для записи другого формата (NetCDF) выходной формат — это f8(float) формат.

Я пытаюсь прочитать 1-битный двоичный файл на Python ( fromfile функция в модуле NumPy, модуль struct и т. Д.), Но я получаю неправильные данные или ошибку чтения.

Комментарии:

1. Итак, в Fortran вы можете прочитать эти данные с помощью этого open оператора, и вы хотите знать, как прочитать те же данные в python? Что вы подразумеваете под «1-битным»? Этот файл хранит логические значения?

2. Да, я хочу те же данные в python. но я пытаюсь читать двоичные файлы в python, чтение данных отличается.

3. @Daniel При редактировании первых сообщений, пожалуйста, постарайтесь исправить как можно больше проблем, включая орфографию, заглавные буквы и грамматику (в зависимости от ваших знаний английского языка), особенно если ваши правки все еще должны быть одобрены рецензентами.

4. ПРЯМОЙ доступ не должен иметь никакой структуры записей. Вы можете проверить, что, конечно, размер вашего файла должен точно соответствовать размеру данных. @wxmin что такое объявление типа для данных в fortran?

5. Поскольку вы используете CONVERT=, я предполагаю, что вы используете Intel Fortran. Имейте в виду, что в Intel Fortran RECL для неформатированных файлов указывается в 4-байтовых единицах (если не задан параметр -предположим, что byterecl.) Для этих данных нет структуры записей. Я предлагаю сделать «od -h» файла, чтобы увидеть, как на самом деле выглядит структура.