Python- 从subprocess.communicate()读取流输入

我正在使用Python subprocess.communicate()从运行约一分钟的进程中读取stdout。

我该如何stdout以流方式打印出该流程的每一行,以便可以看到生成的输出,但仍然阻止该流程终止,然后再继续?

subprocess.communicate() 似乎一次给出所有输出。

回答:

这是一个简单的示例(不检查错误):

import subprocess

proc = subprocess.Popen('ls',

shell=True,

stdout=subprocess.PIPE,

)

while proc.poll() is None:

output = proc.stdout.readline()

print output,

如果ls结束太快,则while循环可能会在你读取所有数据之前结束。

你可以通过以下方式在stdout中捕获其余部分:

output = proc.communicate()[0]

print output,

以上是 Python- 从subprocess.communicate()读取流输入 的全部内容, 来源链接: utcz.com/qa/436336.html

回到顶部