help!! getting output from another process line by line, using popen

Lao Coon laocoon at eudoramail.com
Fri Jan 17 08:45:58 EST 2003


cout <cout at netvigator.com> wrote in news:b08ka1$q8l8 at imsp212.netvigator.com:

> Help!!
> 
> There are 2 python scripts, one is to print out the output(output.py),
> the other is supposed to get std output from output.py line by line.
> However, it only get all the result after 40 seconds. Not during the
> executing process. Any ideas?
> 
> ===========output.py==============
> #! /usr/bin/python
> 
> import time
> 
> for i in range(1,20,1):
>          print i
>          time.sleep(2)
> 
> ================monitor.py===============
> #! /usr/bin/python
> 
> import os
> import sys, string
> cmd="python output.py"
> 
> handle = os.popen(cmd, 'r', 1)
> for line in handle:
>      print line,
> handle.close()

This has something to do with the way the output is returned here..
When you say "for line in handle" read() is called, it waits
until everything has been received and then returns it as a list(only once). 
To fix it explicitly call readline() instead.

HTH
Lao




More information about the Python-list mailing list