使用python subprocess.call在另一个目录中运行.exe
我在使用 subprocess.run()
的时候遇到了麻烦。
在Windows系统中,我在Visual Studio外面打开了一个命令窗口,然后看到:
c:\users>
接着我切换了目录
c:\users>cd c:\xfoil
然后我运行了xfoil程序
c:\xfoil\xfoil.exe < input_file.txt
xfoil程序运行后会生成一些输出文本文件。
我想把这个过程嵌入到我的代码里,这样就不需要手动生成和导入xfoil的输入/输出文本文件了。
这是我尝试过的一段代码,但没有成功。
import subprocess
xfoil_output = subprocess.run(r'c:\xfoil\xfoil.exe < input_file.txt')
这段代码可以运行,但它一直在运行,没有任何错误提示,也没有生成输出文件。(xfoil应该会在xfoil目录下生成那些文件,我也不知道变量xfoil_output的值是什么,也不太关心)。我不得不停止调试才能结束这个程序。
我在这里和其他地方找了很多例子,但就是无法让它正常工作。
1 个回答
0
你应该先读取输入文件的内容,然后使用subprocess.run()来执行XFOIL,并直接提供输入内容,像下面这样:
import subprocess
import os
os.chdir(r'c:\xfoil')
with open(r'input_file.txt', 'rb') as f:
input_content = f.read()
xfoil_process = subprocess.run(['xfoil.exe'], input=input_content, capture_output=True)
xfoil_output = xfoil_process.stdout