当程序还提示用户输入时,我在编写程序输出时遇到问题。
在write_output.py
中:
content = [str(i+1)+' blabla'*50 for i in range(200)]
for line in content:
print line
a = raw_input('Write something:\n')
print 'You wrote:',a
在show_output.py
中:
from subprocess import Popen,PIPE
popen = Popen(['python','write_output.py'],stdout=PIPE,stderr=PIPE)
for line in iter(popen.stdout.readline,''):
print line
popen.wait()
show_output.py
的输出在第197行停止,但是您仍然可以提供输入值,它将打印出其余的值
如果我仅使用'blabla'
而不是'blabla'*50
,则show_output.py
不打印任何内容,仍然可以给出输入,并且所有内容都将被打印出来。
如果我注释掉write_output.py
的最后两行,那么show_output.py
会在两种情况下都按预期方式编写所有内容。
有人可以解释发生了什么事吗?
为什么要求输入会更改子流程的标准输出?