Tôi rất mới lập trình nên tôi xin lỗi trước nếu câu hỏi của tôi quá ngớ ngẩn.Tại sao mã này hoạt động khác trong Python3.1 so với 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)
Thực thi mã này trong Python 2.6 in các chữ a, b, c, d, mỗi dòng xuất xuất sau một giây. Đây là hành vi mong đợi. Nhưng trong thực thi Python 3.1 bị chặn tại dòng output=p.stdout.readline()
. Cách sửa lỗi này cho Python 3.1?
chính xác những gì sẽ xảy ra khi thực thi bị chặn? Bạn có một lỗi bạn có thể hiển thị? – Ben
không phải lỗi, chỉ lời nhắc cho đầu vào; mã này được thực thi trong cửa sổ đầu cuối –
Khi đoán, có thể có sự khác biệt về đệm; hiện một cái gì đó thay đổi nếu bạn thêm một cuộc gọi đến p.stdin.flush sau khi viết? –