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

问题描述 投票:0回答:1

我是退休的航空航天工程师。从来没有用过Python,只是临时拿起它。也不是程序员。

使用Visual Studio编写利用叶片单元动量理论的螺旋桨性能分析代码。这需要使用名为 XFOIL 的免费在线可用外部代码。

我实际上在这方面取得了很多进展,但在尝试使用 subprocess.run() 时遇到了困难。

在 Windows 中,在 Visual Sudio 之外,我打开一个命令窗口并得到:

c:\用户>

然后我改变目录

c:\users>cd c:\xfoil

然后我运行 xfoil 程序

c:\xfoil.exe < input_file.txt

xfoil 运行并生成输出文本文件。我已经有了从这些输出文件中提取数据的代码。尝试将其嵌入到我的代码中,这样我就不必手动生成和导入 xfoil 输入/输出文本文件

这是我尝试过但不起作用的代码示例。

导入子流程

xfoil_output = subprocess.run(r'c:\xfoil\xfoil.exe < input_file.txt')

它运行,不会给出任何错误,但只是永远运行并且不会创建任何输出文件(xfoil 应该在 xfoil 目录中生成这些文件,不知道或关心变量 xfoil_output 的值是什么)。我必须停止调试才能结束程序。

在这里和其他地方找到了很多例子,但无法使其工作。

花了大约4个小时。感谢您提供的任何帮助。

python windows cmd subprocess
1个回答
0
投票

您应该首先读取输入文件的内容,然后应该使用 subprocess.run() 直接提供输入内容来执行 XFOIL,如下所示:

import subprocess

with open('input_file.txt', 'rb') as f:
    input_content = f.read()

xfoil_process = subprocess.run(['c:\\xfoil\\xfoil.exe'], input=input_content)
© www.soinside.com 2019 - 2024. All rights reserved.