Una vez más, la misma pregunta.
La razón es - Todavía no puedo hacer que funcione después de leer lo siguiente:subprocess.Popen.stdout - lectura de stdout en tiempo real (de nuevo)
- Real-time intercepting of stdout from another process in Python
- Intercepting stdout of a subprocess while it is running
- How do I get 'real-time' information back from a subprocess.Popen in python (2.5)
- catching stdout in realtime from subprocess
Mi caso es que tengo una aplicación de consola escrita en C, tomemos por ejemplo este código en un bucle:
tmp = 0.0;
printf("\ninput>>");
scanf_s("%f",&tmp);
printf ("\ninput was: %f",tmp);
Lee continuamente algunas entradas y escribe alguna salida.
Mi código python para interactuar con él es la siguiente:
p=subprocess.Popen([path],stdout=subprocess.PIPE,stdin=subprocess.PIPE)
p.stdin.write('12345\n')
for line in p.stdout:
print(">>> " + str(line.rstrip()))
p.stdout.flush()
Hasta ahora cada vez que leo forma p.stdout
siempre espera hasta que se termina el proceso y luego da salida a una cadena vacía. He intentado muchas cosas, pero aún así el mismo resultado.
Intenté Python 2.6 y 3.1, pero la versión no importa, solo necesito hacer que funcione en alguna parte.
Estoy exactamente en la misma situación, habiendo leído todas esas preguntas y todavía no encontré nada elegante que funcione. –
relacionado: [Cómo interactuar correctamente con un proceso utilizando el módulo de subproceso] (http://stackoverflow.com/q/443057/4279) – jfs
Vine aquí con la misma pregunta, encontré la respuesta aquí http://stackoverflow.com/q/375427/168034 – phunehehe