我有一个名为的脚本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贡献1963条经验 获得超6个赞
您的第二部分代码将第一部分代码作为带有管道输入和输出的子过程开始。然后,它关闭其输入并尝试读取其输出。
代码的第一位尝试从标准输入中读取内容,但是启动它的进程关闭了其标准输入,因此它立即到达文件结尾,Python变成了异常。
添加回答
举报
0/150
提交
取消