我需要在后台执行命令行作为子进程。
所以,我用以下代码完成了它:
import subprocess
subprocess.Popen('command line', shell=True)
但是,我应该等待子流程,直到它准备好并输出“完成”。然后我想让子进程继续运行并运行我的Python代码的下一行。
如何查看子流程的标准输出,如果打印出某一行,则转到下一行?
请帮忙! 感谢。
答案 0 :(得分:1)
将subprocess.run
与check=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')