等待子进程直到它输出某一行

时间:2017-04-28 13:53:14

标签: python subprocess

我需要在后台执行命令行作为子进程。

所以,我用以下代码完成了它:

import subprocess

subprocess.Popen('command line', shell=True)

但是,我应该等待子流程,直到它准备好并输出“完成”。然后我想让子进程继续运行并运行我的Python代码的下一行。

如何查看子流程的标准输出,如果打印出某一行,则转到下一行?

请帮忙! 感谢。

2 个答案:

答案 0 :(得分:1)

subprocess.runcheck=True一起使用。

  

Python»文档 subprocess.run       subprocess.run(args,*,stdin = None,input = None,stdout = None,stderr = None,shell = False,timeout = None,check = False,encoding = None,errors = None)

     

运行args描述的命令。等待命令完成,然后返回CompletedProcess实例。

答案 1 :(得分:1)

按照@ Zondo的建议,我用一个名为pexpect的库解决了我自己的问题。

真的很简单!如果你想执行命令并等到打印'完成',那么你可以这样做:

import pexpect

child = pexpect.spawn('<command that you want>')
child.expect('Done')