nteração do subprocesso Python, por que meu processo funciona com o Popen.communicate, mas não com o Popen.stdout.read ()?

Estou tentando me comunicar com um bot de bate-papo da linha de comando com Python usando osubprocess module. (http://howie.sourceforge.net/ usando o binário win32 compilado, tenho minhas razões!)

Isso funciona

proc = Popen('Howie/howie.exe', stdout=PIPE,stderr=STDOUT,stdin=PIPE)
output = proc.communicate()

MasPopen.communicate aguarda o término do processo (e o envia EOF?), quero poder interagir com ele. A solução aparente para isso foi lerstdout / escreverstdin igual a

Isso não funciona:

proc = Popen('Howie/howie.exe', stdout=PIPE,stderr=STDOUT,stdin=PIPE)
while True: print proc.stdout.readline()

(Observe que, na verdade, estou usando um código mais complexo com base emhttp: //code.activestate.com/recipes/440554 mas o problema é o mesmo.)

O problema é que a segunda abordagem funciona perfeitamente para se comunicar com o cmd, mas quando eu executo o chatbot, nada. Então, minha pergunta é:Como isso é diferente na captura de saída usando Popen.communicate ()?

i.e. Eu posso usar a segunda abordagem para usar a linha de comando normalmente, até executar o chatbot, quando paro de receber saída. Usar a primeira abordagem corretamente exibe as primeiras linhas de saída do bot, mas me deixa incapaz de interagir com el

questionAnswers(4)

yourAnswerToTheQuestion