Знаете ли вы модуль Python для чтения универсального формата файлов (UFF)? - PullRequest
2 голосов
/ 08 марта 2010

В этот раз Google не был моим другом.

Это самый близкий к документу, который я могу найти: http://go -ci.com / note / new / note_401.html . Парни, которые создали это, должны иметь что-то на http://sdrl.uc.edu/UFF2/58.asc, но это 404.

UFF - это формат, используемый научными программами. Это не широко используется, но некоторые старые программы ручной работы требуют этого.

Обратите внимание, что сейчас вопрос не в том, что мне делать со старыми программами или со старыми программистами, ответственными за это: -p

Ответы [ 2 ]

6 голосов
/ 23 февраля 2016

Да, есть модуль pyuff.

Проверьте витрину Пюффа: https://github.com/openmodal/pyuff/blob/master/pyuff%20Showcase.ipynb

Ссылка на pypi: https://pypi.python.org/pypi/pyuff

или github: https://github.com/openmodal/pyuff

5 голосов
/ 08 марта 2010

Если вы имеете в виду эти многие "универсальные форматы файлов", например, универсальный набор данных 58 и многие другие нумерованные наборы данных, я не думаю, что есть какие-либо библиотеки Python для их непосредственного чтения. Я думаю, вам придется написать свой собственный код, в зависимости от того, какие номера «универсального набора данных» вам нужны.

Это будет какая-то работа, но, возможно, не такая уж ужасная: все форматы задокументированы в / для Fortran IV (дает представление о приблизительном возрасте этих форматов ...!), Так что они не Трудно интерпретировать, если вы знаете нотацию ФОРМАТ Фортрана. Например, в UDV 58 первые несколько строк задокументированы как

Record 1:     Format(80A1)

означает «80 байтов, которые должны интерпретироваться как одна текстовая байтовая строка [[ASCII]]»; несколько строк вниз,

Record 6:     Format(2(I5,I10),2(1X,10A1,I10,I4))

означает «дважды 5-значное целое число, за которым следует 10-значное целое число; затем дважды пробел, 10-байтовую строку ascii, 10-значное целое число, 4-значное целое число» и следующие строки в документе объясните значение десяти полей (пробел, 1X, не объясняется ;-) - тип функции с кодом 0 для общего или неизвестного, 1 для отклика времени, 2 для автоматического спектра, ... все путь к 27 для функции заказа или 28 для компенсации фазы; затем идентификационный номер функции; и так далее, и тому подобное.

Формат оператора Fortran IV FORMAT не так уж сложен и широко документирован, например, здесь . Кроме того, вы можете написать очень простой код на Фортране, который просто применяет последовательность форматов, как указано в этих документах, и превратить его в расширение Python с f2py (или, может быть, pyfortran , но я думаю, что последнее не поддерживалось в последние несколько лет, когда Пол Дюбуа ушел на пенсию).

Еще одна возможность: python-fortranformat специально предназначен для использования операторов формата fortran в Python. Это «работа в процессе», но сейчас она достаточно стабильна. Установить с easy_install -U fortranformat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...