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

时间:2012-11-08 18:47:43

标签: 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()

当他们不遵循我的输入约定时,expect命令不起作用。出于这个原因,我使用child.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

如果我足够快,可以在结束前按下ascii 29,一切都很顺利。可能有什么不对?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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