5

我对编程很陌生,所以如果我的问题太愚蠢,我提前道歉。

#!/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 中,执行在 line 处被阻止output=p.stdout.readline()。如何为 Python 3.1 更正此问题?

4

1 回答 1

3

似乎是缓冲的差异。添加一个p.stdin.flush()呼叫解决了这个问题。(见上面的评论)。

社区维基,因为我不值得这个答案的功劳,但有些答案需要被标记为接受。

[@Geo Pop:请“接受”这个问题,因为它显然是正确的。]

于 2009-12-20T21:24:00.043 回答