python - 如何使用子进程保持 xfoil 打开
问题描述
概括
我正在使用模块自动化xfoilsubprocess
。我希望能够使用几个命令启动一个 xfoil 会话,并将其打开以供用户使用。这将有助于调试,并且更普遍地具有启动 xfoil 的基本例程(无需每次手动输入相同的命令集)。
我可以使用subprocess.communicate()
. 但是,当使用subprocess
xfoil 打开时,系统会在没有用户操作的情况下关闭。
例子
使用以下代码,可以快速看到 xfoil 的打开和关闭。
import subprocess
XFOIL_PATH = 'xfoil.exe'
xfoil = subprocess.Popen(XFOIL_PATH, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True)
actions = 'NACA 0012\nGDES\n'
xfoil.communicate(input=actions)
笔记
我subprocess.Popen()
用 Rhino 和 Rhino 保持打开状态,直到我手动关闭它。我不明白为什么 xfoil 的行为不同。
我怀疑它与特定应用程序的标准输出有关,但这是一个疯狂的猜测。希望有可能对此做点什么。
解决方案
我的理解是当你communicate()
用input
参数调用时,调用会 close stdin
,从而终止xfoil.exe进程。尝试以下操作而不是调用communicate()
:
xfoil.stdin.write(actions)
xfoil.stdin.flush()
之后,该过程将继续,直到您退出脚本。
更新
如果您希望 xfoil 项目在脚本结束后继续,请查看 pexpect。
推荐阅读
- c# - 使用默认参数执行存储过程
- html - css 和图像导入不适用于 Intellij 中的 Spring Boot
- dart - 无法在颤动中显示小吃店
- python - 有没有办法附加到python中的对象?优先队列
- php - 表单的视图数据应为 App\Entity\SubmitNew 类的实例
- jquery - 如何在 Google VR View Web 中通过鼠标点击查找热点值(俯仰角、偏航角)
- gtk3 - 如何使用 Rsvg.Handle.has_sub 函数?
- javascript - 如何访问方法内的属性?
- reactjs - 反应状态获取状态的值
- python - 如何在 Python 中修复 Amazon 产品 API 的错误