为什么这段代码在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 中解决这个问题呢?
1 个回答
3
看起来是缓冲的问题。加上一个 p.stdin.flush()
的调用解决了这个问题。(具体可以看看上面的评论)。
这是社区的知识库,我不想因此获得任何荣誉,但这个问题需要有人标记为已解决。
[@Geo Pop: 请“接受”这个问题,因为它显然是正确的。]