我在获取Python AVL时遇到了麻烦。
我需要按顺序运行两个命令并获取整个结果的字符串以供进一步处理:
wine /Applications/avl.exe ~/documents/aerodynamics_project/input_cases/somefile.avl
这会显示问题的命令提示符。OPER
运行案例理想情况下,我希望将整个输出传递给字符串。我无法弄清楚如何做到这一点。目前的代码:
p = subprocess.Popen("wine /Applications/avl.exe ~/documents/aerodynamics_project/input_cases/1_0.2_-0.26.avl", shell = True)
time.sleep(3)
text = p.communicate("OPER")
print(text)
它运行第一个命令(在终端中显示结果),然后不执行任何操作。替换与call之间的通信只返回AttributeError: 'Popen' object has no attribute 'call'
,因此它显然可以运行到那么远。
答案 0 :(得分:0)
你可以尝试传递显式参数吗?而且,使用stdin作为PIPE
p = subprocess.Popen("wine /Applications/avl.exe ~/documents/aerodynamics_project/input_cases/1_0.2_-0.26.avl", shell = True, stdin=subprocess.PIPE).stdin
time.sleep(3)
text = p.communicate(input="OPER")[0]
print(text.decode())