【发布时间】:2022-01-22 16:52:16
【问题描述】:
我是这个 python 世界的新手。最近我被要求在 XFoil(一个空气动力学程序)和 python 之间建立一个接口。经过一番研究,我找到了 subprocess 模块。正如文档所说,它用于“生成新进程,连接到它们的输入/输出/错误管道,并获取它们的返回码。”
问题是我需要一些 XFoil 在运行时创建的输出存档。如果我关闭程序,档案是可访问的,但如果我在子进程仍处于打开状态时尝试打开或读取它们,则会出现以下错误(尽管我可以在文件夹中看到档案):
OSError:找不到保存。
代码如下:
import subprocess
import numpy as np
import os
process = subprocess.Popen(['<xfoil_path>'], stdin=subprocess.PIPE, universal_newlines=True, creationflags = subprocess.CREATE_NEW_PROCESS_GROUP)
airfoil_path = '<path to airfoil>'
process.stdin.write(f'\nload\n{airfoil_path}')
process.stdin.write('\n\n\noper\nalfa\n2\ncpwr\nsave\n')
process.stdin.tell()
print(os.listdir())
c = np.loadtxt('save', skiprows=1)
print(c)
process.stdin.write('\n\n\noper\nalfa\n3\ncpwr\nsave2\n')
stdin.tell 用于获取此输出存档,但它们不可访问。
有人知道为什么会这样吗?
【问题讨论】:
标签: python subprocess stdin archive