it does not work again. Re: help!! getting output from another process line by line, using popen

printf printf at hongkong.com
Fri Jan 17 15:11:20 CET 2003


Lao Coon wrote:
> 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

if you mean that "handle = os.popen(cmd, 'r', 1).readlines()", it wont 
work. it waits till finish running cmd, then go to the "for loop".

thanks anyway





More information about the Python-list mailing list