Python pexpect.spawn.interact返回输入/输出错误

Python pexpect.spawn.interact返回输入/输出错误,python,pexpect,Python,Pexpect,我使用python脚本为我编译和运行学生fortran代码。只要他们遵循我给他们的输入约定,这就行得通。以下是一个对我来说很有效的示例: child = pexpect.spawn(os.path.join(os.path.dirname(file),name)) child.expect('') child.sendline(input) child.expect(pexpect.EOF) self.r_output.append(child.before) child.close() 当它

我使用python脚本为我编译和运行学生fortran代码。只要他们遵循我给他们的输入约定,这就行得通。以下是一个对我来说很有效的示例:

child = pexpect.spawn(os.path.join(os.path.dirname(file),name))
child.expect('')
child.sendline(input)
child.expect(pexpect.EOF)
self.r_output.append(child.before)
child.close()
当它们不遵循我的输入约定时,expect命令不起作用。因此,我使用了
子.interact()
。但每当文件最终终止时,我会得到:

Traceback (most recent call last):
  File "./project.py", line 263, in <module>
    main()
  File "./project.py", line 45, in main
    stud.tohtml(f)
  File "./project.py", line 173, in tohtml
    self.run("<br/>")
  File "./project.py", line 140, in run
    child.interact(chr(27))
  File "/usr/lib/python2.7/dist-packages/pexpect.py", line 1492, in interact
    self.__interact_copy(escape_character, input_filter, output_filter)
  File "/usr/lib/python2.7/dist-packages/pexpect.py", line 1520, in __interact_copy
    data = self.__interact_read(self.child_fd)
  File "/usr/lib/python2.7/dist-packages/pexpect.py", line 1510, in __interact_read
    return os.read(fd, 1000)
OSError: [Errno 5] Input/output error
回溯(最近一次呼叫最后一次):
文件“/project.py”,第263行,在
main()
文件“/project.py”,第45行,主
stud.tohtml(f)
文件“/project.py”,第173行,在tohtml中
self.run(“
”) 文件“/project.py”,第140行,运行中 儿童互动(chr(27)) 文件“/usr/lib/python2.7/dist packages/pexpect.py”,第1492行,在interact中 self.\uu interactive\u copy(转义字符、输入过滤器、输出过滤器) 文件“/usr/lib/python2.7/dist packages/pexpect.py”,第1520行,复制 数据=self.\u交互\u读取(self.child\u fd) 文件“/usr/lib/python2.7/dist-packages/pexpect.py”,第1510行,以交互方式读取 返回操作系统读取(fd,1000) OSError:[Errno 5]输入/输出错误

如果我足够快,在结束前按ascii 29,一切都会很顺利。有什么不对劲吗?如何解决此问题?

这可能意味着孩子退出了。您可以将调用包装在try/except中,并检查
child.isalive()
以确保。

这可能意味着孩子已退出。您可以在try/except中包装调用,并检查
child.isalive()
以确保