Ich bin sehr neu in der Programmierung, also entschuldige ich mich im Voraus, wenn meine Frage zu albern ist.Warum verhält sich dieser Code in Python3.1 anders als in 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)
Ausführen diesen Code in Python 2.6 drucken Buchstaben a, b, c, d, jede Zeile der Ausgabe erscheint nach einer Sekunde. Dies ist das erwartete Verhalten. In Python 3.1 wird die Ausführung jedoch in Zeile output=p.stdout.readline()
blockiert. Wie behebt man dies für Python 3.1?
, was genau passiert, wenn die Ausführung gesperrt ist? Hast du einen Fehler, den du anzeigen kannst? – Ben
keine Fehler, nur Eingabeaufforderungen; Dieser Code wurde im Terminal-Fenster –
ausgeführt. Bei einer Schätzung könnte es Unterschiede in der Pufferung sein; ändert sich etwas, wenn Sie nach dem Schreiben einen Aufruf an p.stdin.flush hinzufügen? –