python子进程运行交互程序

时间:2016-11-30 19:22:11

标签: python subprocess

我想使用python的子进程运行一个交互式程序。此交互式程序启动并运行一段时间。我想阅读标准输出并处理它。运行一段时间后,它会等待用户输入提示。例如,此提示可以是“tool_name>”。我想检测这种情况并获取另一个脚本。这是一些基本代码,我可以想出来。如果有人可以进一步评论这是否是正确的方法,那就太棒了。

import subprocess
p = subprocess.Popen(['cli_program' 'a.txt'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE)
while True:
    line = p.stdout.readline()
    if not line: #this is true only when application exits
        break
    elif 'tool_name> ' in line: #wanted to detect the wait state
        p.stdin.write('source b.txt\n')
        p.stdin.flush()
    else:
        print line

这里,“cli_program”是我的交互式程序,它将开始执行脚本a.txt并等待提示“tool_name>”。

0 个答案:

没有答案