Seite 1 von 1

subprocess: NAch jeder Zeile Antwort kriegen klappt nicht

Verfasst: Freitag 20. Januar 2006, 07:56
von henning
Moin.
Folgendes: Ich möchte via subprocess(stdin=PIPE, stdout=PIPE) mit einem anderen Programm kommunizieren. Ich weiß, dass dieses Programm auf jede Zeile input mindestens eine Zeile output gibt.
Die scheint aber nicht immer anzukommen, ach flushen bringt da nichts. (Das äußert sich so, dass ein readline() auf den stdout einfach hängen bleibt)
communicate() oder schließen von stdin sind keine Option, da ich später noch weitere Zeilen hinschicken will.

Hab mal zum Test ein kleines python-script geschrieben mit dem ich dann festgestellt, dass die input-Zeile sehr wohl ankommt, aber das output des Programms wohl nicht (hab das script zusätzlich in ne logdatei schreiben lassen).

Nun 2 Fragen:
1. Wie kann ich das reparieren, so dass ich zumindest die erste Zeile (die ja auf jeden Fall da ist) wenigstens lesen kann?

2. Kann ich irgendwie nicht-blockierend von stdout lesen? Ich weiß ja nicht, wie viele Zeilen jeweils als Antwort kommen, muss die Antwort aber unbedingt vor der nächsten "Frage" verarbeiten.

(auf der anderen Seite kann ich leider nichts an diesem undefinierten Verhalten ändern, das haben andere verbrochen)

TIA
Henning

Verfasst: Freitag 20. Januar 2006, 08:24
von jens
Andere Frage: Warum machst du einen neuen Thread auf, wenn doch hier http://www.python-forum.de/viewtopic.php?t=4935 was recht ähnliches Diskutiert wird?

Verfasst: Freitag 20. Januar 2006, 09:23
von henning
Weil die Frage doch ne andere ist und ich zu spät gesehen habe, dass der andere Thread auch auf dieses Thema hinausläuft, sorry!

Re: subprocess: NAch jeder Zeile Antwort kriegen klappt nich

Verfasst: Freitag 20. Januar 2006, 09:30
von gerold
henning hat geschrieben:(Das äußert sich so, dass ein readline() auf den stdout einfach hängen bleibt)
Hi Henning!

Ich glaube nicht, dass es so funktioniert, da stdin blockiert, bis die Eingabe abgeschlossen ist, aber modelnine hat sich daran mal versucht:
http://www.python-forum.de/viewtopic.php?p=29414#29414
Vielleicht kannst du damit etwas anfangen.

lg
Gerold
:-)