Я очень новичок в программировании, поэтому заранее извиняюсь, если мой вопрос слишком глуп.Почему этот код ведет себя по-другому в Python3.1, чем в 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)
Выполнение этого кода в Python 2.6 печатает буквы A, B, C, D, каждая строка вывода появляется после второй. Это ожидаемое поведение. Но в Python 3.1 выполнение блокируется по строке output=p.stdout.readline()
. Как исправить это для Python 3.1?
, что именно происходит, когда выполнение блокируется? У вас есть ошибка, которую вы могли бы показать? – Ben
не ошибки, только подсказки для ввода; этот код был выполнен в окне терминала –
При догадких это могут быть различия в буферизации; что-то изменилось, если вы добавили вызов p.stdin.flush после записи? – 2009-12-20 19:52:31