所以我有点发脾气。我试图编写绘图和拟合扩展到Fortran77(为什么这个程序在F77中被重写,这是一个神秘的,我,顺便说一句)代码,需要命令行输入,即它提示用户输入。目前该程序使用GNUplot进行绘图,但GNUplot拟合程序在我看来并不理想,而且从Fortran调用GNUplot至少可以说是痛苦。
我主要与Numpy,Scipy和Matplotlib合作,以满足我的拟合和策划需求。我想知道是否有办法在Python中调用F77程序然后让它像任何其他F77程序一样运行,直到我需要它的部分适合并吐出一些漂亮的图(没有这个GNUplot的东西)。
我知道F2PY,但我听到过有关它的混合物。我还考虑过使用pyexpect并从那里开始,但是我对处理屏幕上改变预期提示的方式有不好的体验(或者我只是错误地使用它)。
感谢您提供任何相关信息。
答案 0 :(得分:2)
您不能只将Fortran程序生成的数据转储到文件中,然后从python中读取它吗?
Numpy可以读取二进制文件并将其视为数组。 从这里到matplotlib然后应该是一个breeeze。
答案 1 :(得分:1)
听起来你想要做的就是运行F77程序,然后解析输出文件,所有这些都来自python(如果我错了,请纠正我)。最简单的做法是,假设fortran程序运行完成,只需设置python来获取用户输入或配置文件(参见http://docs.python.org/library/configparser.html),然后将这些输入提供给python进程模块:
http://docs.python.org/library/subprocess.html
让它运行F77可执行文件,然后收集输出并分析/绘制它们。所有python脚本必须做的是准备fortran的输入,然后稍后从某个指定的地方获取结果。
在subprocess
上查看Doug Hellmann的这篇优秀教程: