[Tutor] Something that Perl can do that Python can't?
jsmith at medplus.com
Fri Jul 22 23:06:15 CEST 2005
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:
line = stdout.readline()
if not line:
print 'LINE:', line,
If anyone can do it the more Pythonic way with some sort of iteration
over stdout, please let me know.
From: tutor-bounces at python.org [mailto:tutor-bounces at python.org] On
Behalf Of Smith, Jeff
Sent: Friday, July 22, 2005 4:37 PM
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):
In Perl, I do:
open(FILE, "python bufcallee.py |");
while ($line = <FILE>)
print "LINE: $line";
in which case I get
followed by a 10 second pause and then
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
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
Tutor maillist - Tutor at python.org
More information about the Tutor