How do i get output from pope3 while process is running?

Andrew Patterson andrew at fc.hp.com
Mon Dec 6 13:05:40 EST 1999


Li Dongfeng wrote:
> 
> Try the patch(I think you can't do readlines() more than once):
> 

Which patch is that?

Andrew

> Andrew Patterson wrote:
> >
> > I want to run an extremely long running external command and send its output
> >
> > to stdout of my python program.  I started with os.system which works fine
> >
> > except that I needed to capture the stderr output in a separate stream.  The
> >
> > popen2.Popen3 class seems to fit the bill, however, I can not get any of the
> >
> > output until the process finishes (hours later).  Here is the code I am using:
> >
> > ################################  run_proc()  #################################
> > def run_proc(cmd, capturestdout=0, capturestderr=0, printstdout=0):
> >     """Run an external command and capture stderr, stdout, and exit code."""
> >
> >     proc = popen2.Popen3(cmd, capturestderr)
> >     stdoutlist = []
> >     stderrlist = []
> >     if capturestdout:
>           outls=proc.fromchild.readlines()
> >         for line in outls:
> >             if printstdout:
> >                 print "\n********* Got Here ************"
> >                 sys.stdout.write(line)
> >             stdoutlist.append(line)
> >     if capturestderr:
> >         stderrlist = proc.childerr.readlines()
> >     exit_code = proc.wait()
> >     return (exit_code, stdoutlist, stderrlist)
> >
> > I get the "Got here" lines after the process finishes.  I am running python 1.5.2
> >
> > on an HP-UX 11.0 system with native pthreads compiled in.
> >
> > Can someone please tell me what I am doing wrong.  Thanks
> >
> > Andrew
> > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> >    Andrew Patterson                          Voice:  (970) 898-3261
> >    Hewlett-Packard Company/DSL               FAX:    (970) 898-2180
> >    3404 East Harmony Road / MS 7             email: andrew at fc.hp.com
> >    Fort Collins, Colorado  80525

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
   Andrew Patterson                          Voice:  (970) 898-3261
   Hewlett-Packard Company/DSL               FAX:    (970) 898-2180
   3404 East Harmony Road / MS 7             email: andrew at fc.hp.com
   Fort Collins, Colorado  80525




More information about the Python-list mailing list