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

Li Dongfeng mavip5 at inet.polyu.edu.hk
Fri Dec 3 23:37:14 EST 1999


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

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




More information about the Python-list mailing list