我有程序A,它是一个命令行应用程序,可以随机打印出特定的状态消息。它还需要输入和运行命令。我正在尝试做的是使用Python来创建该程序的包装器,以便当输出(stdout)满足特定条件时,运行python函数。我还有一个函数,它将基于Slack向程序A发送输入 - 我正在使用slackhq / python-slackclient rtm_connect()来监听一个通道。但是,当我运行我的处理程序时,STDIN / STDOUT不会出现(STDOUT因为指南而被发送到PIPE),当我手动触发符合第一个python函数条件的事件时,没有任何反应。没有打印声明,没有。
Pexpect一直打pexpect.TIMEOUT: Timeout exceeded.
a = Popen(["/proj/a"], stdout=PIPE)
def main():
sc.rtm_connect() #The RTM connect
a_to_slack(test_message) #Post message when connected
if a:
print("A was opened previously")
listen_to_a()
else:
world = Popen(["/proj/a"], stdout=PIPE)
listen_to_a()
def listen_to_a():
while True:
data, error = a.stdout.read()[0] #From duplicate, to get STDOUT
print(data) #Never prints
a_to_slack(data) #Nothing..
print sc.rtm_read() #Doesn't print here either
time.sleep(1)