我正在执行一个大约15分钟的命令,我通过fetchPipe.communicate
捕获输出然后打印它。有没有办法在Python中将输出打印到stdout并捕获?
fetchPipe = subprocess.Popen(cmd.split(' '), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(output, error) = fetchPipe.communicate()
答案 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()