So here it is: handle unbuffered output from a child process.
Here is the child process script (bufcallee.py):
import time
print 'START'
time.sleep(10)
print 'STOP'
In Perl, I do:
open(FILE, "python bufcallee.py |");
while ($line = <FILE>)
{
print "LINE: $line";
}
in which case I get
LINE: START
followed by a 10 second pause and then
LINE: STOP
The equivalent in Python:
import sys, os
FILE = os.popen('python bufcallee.py')
for line in FILE:
print 'LINE:', line
yields a 10 second pause followed by
LINE: START
LINE: STOP
I have tried the subprocess module, the -u on both the original and
called script, setting bufsize=0 explicitly but to no avail. I also
get the same behavior on Windows and Linux.
If anyone can disprove me or show me what I'm doing wrong, it would be
appreciated.
Jeff
--
http://mail.python.org/mailman/listinfo/python-list