如何从subprocess.communicate()中捕获python中的流输出

 

问题描述:

目前,我有这样的事情:

self.process = subprocess.Popen(self.cmd, stdout=subprocess.PIPE)
out, err = self.process.communicate()

我正在运行的命令将输出流式传输,在继续之前,我需要阻塞该过程。

如何做到这一点,以便可以捕获流输出并通过stdout打印流输出?设置时stdout=subprocess.PIPE,我可以捕获输出,但不会打印输出。如果我不进行操作stdout=subprocess.PIPE,它将打印输出,但communicate()将返回None

有没有一种解决方案可以满足我的要求,即在进程终止/完成之前提供阻塞,并避免此处提到的缓冲区问题和管道死锁问题?

谢谢!


我有一个脚本,用于检查SharePoint列表中的特定文件修订并返回结果。这种方法效果很好,但是目前我的授权方法要求我在代码中包含自己的密码才能访问Share ...