Python- 从subprocess.communicate()读取流输入
我正在使用Python subprocess.communicate()
从运行约一分钟的进程中读取stdout。
我该如何stdout以流方式打印出该流程的每一行,以便可以看到生成的输出,但仍然阻止该流程终止,然后再继续?
subprocess.communicate()
似乎一次给出所有输出。
回答:
这是一个简单的示例(不检查错误):
import subprocessproc = 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