[Python-de] Zugriff auf stdout und stderr von "externe" Prozessen unter Window

Martin Wisskirchen martin.wisskirchen at fit.fraunhofer.de
Don Mar 23 11:07:56 CET 2006


Hallo zusammen,

ich möchte eine grafische Anwendung (Tkinter) erstellen, die 
verschiedene Informationen sammelt und darauf hin den MS Visual Studio 
7.1 C++ Compiler  (Terminal) startet. Dieser gibt normalerweise seine 
Ausgaben auch anf dem Terminal aus. Diese Ausgaben möchte ich allerdings 
in ein Text-Widget umlenken. Dies mache ich bereits mit os.popen3 und 
das funktioniert auch soweit. Das Problem ist allerdings, das die 
Ausgaben erst von den Fileobjects ausgegeben werden, wenn der Compiler 
beendet ist. Um denCompilerungsprozess zu überwachen ist dies allerdings 
denkbar schlecht. Dies liegt wahrscheinlich daran, dass der Compuiler 
Output seitens des Compiler-Prozesses gebuffert wird.
Unter Unix kann man dies scheinbar (?) unter Zuhilfename von "pty" 
verhindern, dass steht leider unter Windows nicht zur Verfügung.....

Hier der Code:
        
      
       #qmakecall ruft qmake mit den zugehöhrigen Parametern auf....

         (input, output, error) = os.popen3(qmakecall)

             
       #self.debugWindow ist das TextWidget, das übergeben wird.....
         self.debugWindow.insert(END, input.read()) 
         self.debugWindow.insert(END, error.read())