Well, I finally managed to solve it myself by looking at some code. The solution in Python is a little non-intuitive but this is how to get it:
while 1: line = stdout.readline() if not line: break print 'LINE:', line, If anyone can do it the more Pythonic way with some sort of iteration over stdout, please let me know. Jeff -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Smith, Jeff Sent: Friday, July 22, 2005 4:37 PM To: Tutor Subject: [Tutor] Something that Perl can do that Python can't? 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 _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor