为什么在有和没有用户输入的情况下子流程标准输出的行为都不同

时间:2018-07-04 22:41:59

标签: python subprocess

当程序还提示用户输入时,我在编写程序输出时遇到问题。

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会在两种情况下都按预期方式编写所有内容。

有人可以解释发生了什么事吗?

为什么要求输入会更改子流程的标准输出?

0 个答案:

没有答案