Запустите программу командной строки Fortran в Python - PullRequest
2 голосов
/ 29 марта 2011

Так что я немного рассол.Я пытаюсь написать построение графиков и подгонку расширений для Fortran77 (почему эта программа была переписана на F77, для меня тоже загадка), который требует ввода из командной строки, то есть он запрашивает ввод у пользователя.В настоящее время программа использует GNUplot для построения графика, но на мой взгляд подпрограмма подгонки GNUplot далеко не идеальна, и, по меньшей мере, вызов GNUplot из Fortran - это боль в заднице.

В основном я работал с Numpy, Сципи и Матплотлиб, чтобы удовлетворить мои примерочные и сюжетные потребности.Мне было интересно, есть ли способ вызвать программу F77 на Python, а затем запустить ее так, как я бы запустил любую другую программу F77, до той части, где она мне понадобится, чтобы разместить и выплюнуть несколько хороших графиков (ничего из этого материала GNUplot).

Я знаю о F2PY, но я слышал смешанные вещи об этом.Я также собирался использовать pyexpect и перейти оттуда, но у меня плохой опыт работы с тем, как он обрабатывает ожидаемые запросы на экране (или я просто использую их неправильно).

Спасибо за любую информацию по этому вопросу..

Ответы [ 2 ]

2 голосов
/ 29 марта 2011

Разве вы не можете просто записать данные, сгенерированные программой Fortran, в файл, а затем прочитать их из python?

Numpy может читать двоичный файл и обрабатывать его как массив. Переход от сюда к matplotlib тогда должен быть легким.

1 голос
/ 29 марта 2011

Звучит так, будто все, что вам нужно, это запустить программу F77, а затем проанализировать выходные файлы, все из python (поправьте меня, если я ошибаюсь).Самое простое, что нужно сделать, если допустить, что программа на фортране завершится, - это просто настроить python для получения входных данных от пользователя или файла конфигурации (см. http://docs.python.org/library/configparser.html),, а затем передать эти входные данные в модуль процесса python:

http://docs.python.org/library/subprocess.html

чтобы он запустил исполняемый файл F77, а затем собрал выходные данные и проанализировал / построил их на графике. Все, что нужно сделать сценарию python, - это подготовить входные данные для фортрана и затем захватитьрезультаты из определенного места позже.

Посмотрите этот хороший урок от Дуга Хеллмана по subprocess:

http://www.doughellmann.com/PyMOTW/subprocess/

...