Soy muy nuevo en la programación, así que me disculpo por adelantado si mi pregunta es demasiado tonta.¿Por qué este código se comporta de manera diferente en Python3.1 que en Python2.6?
#!/usr/bin/python2.6
import subprocess, time
p=subprocess.Popen(['cat'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
for i in 'abcd':
p.stdin.write(str.encode(i+'\n'))
output=p.stdout.readline()
print(output)
time.sleep(1)
ejecución de este código en Python 2.6 imprime letras a, b, c, d, cada línea de salida aparece después de un segundo. Este es el comportamiento esperado. Pero en Python 3.1 la ejecución está bloqueada en la línea output=p.stdout.readline()
. ¿Cómo corregir esto para Python 3.1?
qué es exactamente lo que sucede cuando la ejecución se bloquea? ¿Tienes un error que podrías mostrar? – Ben
no hay errores, solo solicita ayuda; este código se ejecutó en la ventana de terminal –
Supongo que podrían ser diferencias en el almacenamiento en búfer; ¿algo cambia si agrega una llamada a p.stdin.flush después de la escritura? –