在exe上等待提示

时间:2015-04-28 11:03:25

标签: python

我有一个可执行文件,可以让我与温度控制器通信。当我双击exe(SCPI-CLI.exe)时,它将打开一个带有文本“TC_CLI>”的命令窗口。然后我可以输入我的命令并与我的控制器交谈:例如:TC:COMM:OPEN:SER 8

当我像这样使用subprocess.Popen

import subprocess
text = 'tc:comm:open:ser 8'
proc = subprocess.Popen(['C:\\Program Files (x86)\\TC_SCPI\\lib\\SCPI-CLI.exe'],
                        stdout=subprocess.PIPE,stdin=subprocess.PIPE)
proc.stdin.write(text)
proc.stdin.close()
result = proc.stdout.read()
print(result)

SCPI-CLI.exe将打开,但不会显示>提示。我在这做错了什么?它会挂在proc.stdin.write(text)。 我是子流程的新手。

1 个答案:

答案 0 :(得分:0)

您可以尝试添加" \ n"对于你的字符串,你发送输入键。 另外请尝试将管道添加到stderr并查看它是否显示任何错误(或者它可能使用stderr而不是stdout来替换消息) 还有一件事是,在阅读结果之前等待该程序退出是一个好主意。

试试这个:

import subprocess
import time
import os

text = b'tc:comm:open:ser 8\nexit\n'
proc = subprocess.Popen(['SCPI-CLI.exe'],stdout=subprocess.PIPE,stdin=subprocess.PIPE,stderr=subprocess.PIPE)

out,err = proc.communicate(text)
print(out.decode())