我有一个名为的脚本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变成了异常。
添加回答
举报
0/150
提交
取消