Evening,

I'm having trouble with running a process through Python 2.4's
subprocess module. Example code:

========================================================
def run(command):
   run = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, 
stderr=subprocess.PIPE)

   # Wait for the process to return
   returncode = run.wait()
   stdout = run.stdout.readlines()
   stderr = run.stderr.readlines()

   # Strip newlines at the end of each line
   stdout = [line.rstrip('\n') for line in stdout]
   stderr = [line.rstrip('\n') for line in stderr]

   return returncode,stdout,stderr
========================================================

Unfortunately this def fails when it runs programs that do a lot of
output. I believe this problem has also been described in Bug #1162428.
It says: "You must read away the data before wait() on the process."
Easier said than done. If I put the readlines() call before the
run.wait() then the process hangs, too, waiting for further lines.

Then I read about the communicate() call which handles both
stdout/stderr reading and also waiting for the process to end.
Unfortunately it returned the output char-wise instead of line-wise. I
could certainly re-join the lines. But somehow I feel I'm missing
something simple.

Any ideas?

Kindly
 Christoph

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to