Capture output from stderr

klappnase klappnase at web.de
Tue Aug 5 20:26:49 EDT 2003


Hello,

I am trying to program a Tkinter application for linux, so I want to
run a shell command from the gui and capture its output on the fly
while the process is still running in order to display the progress
messages in a toplevel window so the user may watch what is going on
(the execution of the shell command may take a few minutes). Because
the output is printed to stderr I thought I should use a popen2.Popen4
instance for that, like:

        self.pp = popen2.Popen4("exec cmd")

I tried something like 

    def getmsg(self):
        msg = self.pp.fromchild
        newmsg = msg.read(100)
        ...(do something)...
        self.master.after(1000, self.getmsg)

to get the output, but this way the process gets horribly slowed down
and even if it worked it would be hard to check the whole output for
the information that I want to be displayed.
I think I would need something like 

    self.pp.readlines()

but this only returns after the process has finished.

Does anyone know how to handle this?
I would be very thankful for any help.

Michael




More information about the Python-list mailing list