有没有办法将输出打印到stdout并捕获?

时间:2016-06-30 04:24:26

标签: python

我正在执行一个大约15分钟的命令,我通过fetchPipe.communicate捕获输出然后打印它。有没有办法在Python中将输出打印到stdout并捕获?

    fetchPipe = subprocess.Popen(cmd.split(' '), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    (output, error) = fetchPipe.communicate()

1 个答案:

答案 0 :(得分:2)

是。一个例子可能是使用一个监听器功能:写入stdout并在线接收某些东西

import sys
import subprocess
import threading

听众

def listener(proc):
     for line in proc.stdout:
         sys.stdout.write(line)
         triggerRecvLine(line)
     proc.wait()

在另一个线程中运行侦听器可能是明智的。

proc=subprocess.Popen(cmd.split(' '), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
t = threading.Thread(target=listener, args=(proc, ))
t.start()