我正在尝试使用 Python 运行 AVL(Athena Vortex Lattice)。它是一个在单独的终端窗口上运行的软件,与 XFOIL 完全一样。用户编写命令并按下enter执行。
我正在使用该subprocess模块运行软件,终端窗口按预期打开。但是,我无法让我的 Python 程序将命令写入打开的窗口。我没有收到任何错误,但没有向 AVL 写入任何内容,并且它保持初始状态。
我尝试写入 AVL 的命令LOAD后跟输入文件的绝对路径。
这是我第一次使用 subprocess 模块,所以我可能只是忘记了某个地方的基本选项。我在 macOS 上使用 Python 3.9 运行该程序。
有什么问题?
import os.path
import subprocess as sp
AVL_FOLDER_PATH = '~/Desktop/AVL_VLM'
AVL_EXE_NAME = 'avl335'
avl_path = os.path.join(AVL_FOLDER_PATH, AVL_EXE_NAME)
avl_open_cmd = 'open ' + avl_path
avl_ps = sp.Popen([avl_open_cmd], stdin=sp.PIPE, stdout=None, stderr=None, shell=True)
def avl_command(cmd):
cmd += '\n'
cmd = cmd.encode('ascii')
avl_ps.stdin.write(cmd)
avl_command('LOAD')
avl_command('/Users/vianneydubois/Desktop/AVL_VLM/test_gen.avl')