从Popen获得无限期运行的部分stdout和stderr

时间:2009-10-05 21:37:33

标签: python subprocess

  

可能重复:
  Bypassing buffering of subprocess output with popen in C or Python

我正在构建一个应该无限期运行的服务器cmd行脚本的包装器。 我需要做的是在不等待子进程完成的情况下获取当前的结果。

我的意思是,如果我运行以下内容,一切正常:

ls = Popen(["ls"], stdout=PIPE)
output = ls.stdout.read()

但是如果我对一个无限期运行的程序做同样的事情:

server = Popen(["python","-m","SimpleHTTPServer"], stdout=PIPE)
output = server.stdout.read()

它不会回来......

更新:偶数

 output = server.stdout.read(1) 

...挂起

您是否知道是否有办法以独立于操作系统的方式从Popen(或类似的线程实现)捕获部分输出?

1 个答案:

答案 0 :(得分:-1)

我猜想read()会返回整个内容吗?如果您在循环中读取固定大小的块,则可能会获得更好的结果。