为了账号安全,请及时绑定邮箱和手机立即绑定

了解Popen.communicate

了解Popen.communicate

慕容森 2019-12-27 11:04:51
我有一个名为的脚本1st.py,可创建一个REPL(read-eval-print-loop):print "Something to print"while True:    r = raw_input()    if r == 'n':        print "exiting"        break    else:        print "continuing"然后1st.py,我用以下代码启动:p = subprocess.Popen(["python","1st.py"], stdin=PIPE, stdout=PIPE)然后尝试:print p.communicate()[0]它失败,提供了以下追溯:Traceback (most recent call last):  File "1st.py", line 3, in <module>    r = raw_input()EOFError: EOF when reading a line你能解释一下这里发生了什么吗?当我使用时p.stdout.read(),它将永远挂起。
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

您的第二部分代码将第一部分代码作为带有管道输入和输出的子过程开始。然后,它关闭其输入并尝试读取其输出。

代码的第一位尝试从标准输入中读取内容,但是启动它的进程关闭了其标准输入,因此它立即到达文件结尾,Python变成了异常。


查看完整回答
反对 回复 2019-12-27
  • 3 回答
  • 0 关注
  • 1077 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信