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

2024-09-28 03:15:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想运行命令并实时捕获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

但是没有什么是输出。。。在


Tags: import命令cmdcommystderrstdoutline
2条回答

read()读取直到EOF(这通常在子进程退出之前不会发生),以获得更多的“实时”至少通过循环中的readline()按行读取

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

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

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

相关问题 更多 >

    热门问题