Geo*_*Pop 5 python stdin subprocess stdout popen
我对编程很陌生,所以如果我的问题太傻,我会事先道歉.
#!/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)
Run Code Online (Sandbox Code Playgroud)
在Python 2.6中执行此代码会打印字母a,b,c,d,每行输出一秒钟后出现.这是预期的行为.但是在Python 3.1中,执行被阻止了output=p.stdout.readline().如何为Python 3.1更正此问题?
看来缓冲有区别。添加p.stdin.flush()呼叫解决了这个问题。(参见上面的评论)。
社区维基,因为我不应该为这个答案加分,但有些答案需要标记为接受。
[@Geo Pop:请“接受”这个问题,因为它显然是正确的。]