我想运行我的命令并实时捕获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
但是没有任何输出......
答案 0 :(得分:1)
read()
读取EOF
(通常在子进程退出之前不会发生),以便在循环中通过readline()
至少按行读取“实时”
答案 1 :(得分:0)
连接到文件描述符的任何对象都可以传递给subprocess.Popen
,包括sys.stdout
!
com=subprocess.Popen(args,stdout=sys.stdout,stderr=sys.stderr)
请注意,这可能在某些python shell中不起作用。