如何在 Python-3 脚本中运行通常在 Ubuntu 终端中运行的 Fortran 可执行文件?

如何在 Python-3 脚本中运行通常在 Ubuntu 终端中运行的 Fortran 可执行文件?

chuck我在文件夹中有一个名为的 Fortran 可执行文件/home/debajyoti/chuckDir/

该程序的chuck作用是,它获取一个输入文件inputfile.txt和一个输出文件outputfile.txt,并根据其中的数据进行计算inputfile.txt,然后将输出写入文件中outputfile.txt

我按照以下步骤进行所有这些计算Ubuntu 终端

~$ cd chuckDir

~/chuckDir$ ./chuck <inputfile.txt> outputfile.txt

现在我想运行chuck并在 中执行所有这些操作Python Script。 的目的Python3 Script是,它将数据从 转移outputfile.txt到 Plot。 现在我的问题是如何在Python3 Script本身内运行 chuck?

答案1

这通常是subprocess非常有用的 Python 魔法。

假设输入文件已命名,inputfile.txt您可以执行此操作并在发生错误时抛出 stderr 输出,在成功运行时抛出 stdout:

import subprocess as sp  # I do this for shortening things later on
import shlex

# Run the program you want with the arguments you want split properly (thanks to shlex.split to making it so sp.run works right); store stdout and stderr results as well
chuck = sp.run(shlex.split('/full/path/to/chuck /full/path/to/inputfile.txt /full/path/for/outputfile.txt'), stdout=sp.PIPE, stderr=sp.PIPE)

if chuck.returncode != 0:
    # If a program exits on an error or fail condition its exitcode is usually not 0
    raise RuntimeError("Chuck did not run right!\n\n{}".format(chuck.stderr))

print(chuck.stdout)

但是,您需要真正确保为文件和chuck可执行文件使用了正确的路径,并使用完整的目录路径。这是您需要使用它并使用chuck正确路径执行的基本代码。顺便说一句,您应该尽可能使用磁盘上的完全限定路径。

本质上,检查程序的返回代码、stderr 输出和 stdout 输出的额外步骤是调试步骤。如果程序按预期运行,您将获得一个 outputfile.txt,它位于您指定的位置。

相关内容