使用python subprocess.call在另一个目录中运行.exe

0 投票
1 回答
48 浏览
提问于 2025-04-12 03:51

我在使用 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

撰写回答