2

所以我有点苦恼。我正在尝试为 Fortran77 编写绘图和拟合扩展(为什么这个程序在 F77 中重写对我来说也是一个谜,顺便说一句)代码需要命令行输入,即它提示用户输入。目前该程序使用 GNUplot 进行绘图,但 GNUplot 拟合例程在我看来并不理想,并且从 Fortran 调用 GNUplot 至少可以说是一种痛苦。

我主要使用 Numpy、Scipy 和 Matplotlib 来满足我的拟合和绘图需求。我想知道是否有一种方法可以在 Python 中调用 F77 程序,然后让它像运行任何其他 F77 程序一样运行,直到我需要它来适应并吐出一些漂亮的情节(这些 GNUplot 东西都没有)。

我知道 F2PY,但我听到了混杂的东西。我也考虑过使用 pyexpect 并从那里开始,但我对它处理屏幕上更改的预期提示的方式有不好的体验(或者我只是使用不正确)。

感谢您提供有关此的任何信息。

4

2 回答 2

2

您不能将 Fortran 程序生成的数据转储到文件中,然后从 python 中读取吗?

Numpy 可以读取二进制文件并将其视为数组。从这里到 matplotlib 应该是轻而易举的事。

于 2011-03-28T22:57:56.120 回答
1

听起来您要做的就是运行 F77 程序,然后解析输出文件,全部来自 python(如果我错了,请纠正我)。最简单的做法是,假设 fortran 程序运行完成,只需设置 python 以从用户或配置文件中获取输入(参见http://docs.python.org/library/configparser.html),然后将这些输入输入 python 进程模块:

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

让它运行 F77 可执行文件,然后收集输出并分析/绘制它们。所有 python 脚本所要做的就是准备 fortran 的输入,然后稍后从某个指定位置获取结果。

查看 Doug Hellmann 的这个很好的教程subprocess

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

于 2011-03-28T23:44:07.247 回答