【发布时间】:2011-03-28 22:54:01
【问题描述】:
所以我有点吃醋了。我正在尝试为 Fortran77 编写绘图和拟合扩展(为什么这个程序在 F77 中重写对我来说也是一个谜,顺便说一句)需要命令行输入的代码,即它提示用户输入。目前该程序使用 GNUplot 进行绘图,但 GNUplot 拟合程序在我看来并不理想,至少可以说从 Fortran 调用 GNUplot 是一件很痛苦的事情。
我主要使用 Numpy、Scipy 和 Matplotlib 来满足我的拟合和绘图需求。我想知道是否有一种方法可以在 Python 中调用 F77 程序,然后让它像运行任何其他 F77 程序一样运行,直到我需要它来适应并吐出一些漂亮的情节(这些 GNUplot 东西都没有)。
我知道 F2PY,但我听到的情况不一。我也考虑过使用 pyexpect 并从那里开始,但我对它处理屏幕上更改的预期提示的方式有不好的体验(或者我只是使用不正确)。
感谢您提供这方面的任何信息。
【问题讨论】:
-
那么Fortran程序是提示用户输入的交互式程序吗?你可以重写它以接受命令行参数或其他可编写脚本的输入吗?
-
是的,它基本上会询问您要分析的数据通道以及是否要设置限制或使用默认设置。我知道我可以通过在它上面运行一个 shell 脚本来相当容易地自动化部分,但问题是我们在不同的通道之间来回走动,并且可能想要调整一些参数而不再次运行整个事情。而当前格式的原因在@greg下面的评论中
-
如果您打算通过标准输出或输出文件从 FORTAN 获取输出(使用 ramdisk 可以非常快),您可以使用
subprocess。但我认为您希望以 numpy 数组的形式访问正在运行的 FORTRAN 程序内存? -
我当时想做的是编写一个包装器,让 F77 代码完成它的工作,直到它完成,然后 python 接管并从 F77 程序的 FITS 输出文件中提取所有必要的数据生成。 @保罗
标签: python numpy scipy fortran77