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,它位于您指定的位置。