在python中捕获子进程实时的stdout?

时间:2015-11-14 13:03:04

标签: python subprocess real-time stdout

我想运行我的命令并实时捕获stdout:

import subprocess
import shlex
cmd='my command'
args=shlex.split(cmd)    
com=subprocess.Popen(args,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
com.stdout.flush()
for line in com.stdout.read()
    print line

但是没有任何输出......

2 个答案:

答案 0 :(得分:1)

read()读取EOF(通常在子进程退出之前不会发生),以便在循环中通过readline()至少按行读取“实时”

答案 1 :(得分:0)

连接到文件描述符的任何对象都可以传递给subprocess.Popen,包括sys.stdout

com=subprocess.Popen(args,stdout=sys.stdout,stderr=sys.stderr)

请注意,这可能在某些python shell中不起作用。