[Python-de] subprocess Ausgaben in "Echtzeit" verarbeiten

Jens Diemer python_gmane at jensdiemer.de
Mi Nov 5 12:59:16 UTC 2008


Ich hab ein Problem mit subprocess. Ich versuche die Ausgaben eines Programms in 
Echtzeit zu verarbeiten.

Das funktioniert aber nur bei Programmen die ein stdout.flush() machen. Macht 
das ein Programm nicht, dann bekommt man erst die Ausgaben, wenn das Programm 
beendet ist.

Das eigentliche Problem wird ganz gut hier erklärt:
http://www.noah.org/wiki/Pexpect#Q:_Why_not_just_use_a_pipe_.28popen.28.29.29.3F

Demnach ist es so, das viele Programme zur Ausgabe die Standard C IO Library 
(stdio.h) nutzten. stdio.h bekommt mit, ob "am Ende" ein Terminal oder eine PIPE 
ist. Bei eine Ausgabe in eine PIPE puffert stdio.h von sich aus die Daten.

Pexpect umgeht das ganze anscheinend in dem es dem das Programm ein 
Pseudo-Terminal vorsetzt wird. Doch das funktioniert unter Windows nicht 
wirklich, siehe:
http://www.noah.org/wiki/Pexpect#pty_module


Wie kann man das ganze unter Windows in den Griff bekommen???


(Das selbe gibt's auch im Forum: http://www.python-forum.de/topic-16459.html )



-- 
Mfg.

Jens Diemer


----
http://www.jensdiemer.de




Mehr Informationen über die Mailingliste python-de