我使用pexpect来自动化一个名为instantmusic的程序。有时,这个程序在它实际完成之前发送一个eof。这是一个截图(如果你无法阅读截图,我已经在问题的最后链接到我更详细的错误报告。):
我可以使用以下代码检测到适当的结尾:
child.expect(
['Deleting*(pass -k to keep)*', pexpect.EOF], timeout=3000)
但是,我的问题是pexpect没有捕获超出eof的输出。 (顺便说一句,不使用那个“pexpect.EOF”会让pexpect在遇到EOF时抛出异常。)
有办法解决这个问题吗?
PS:我已经更详细地描述了这个错误here。但我通常希望能够处理这种情况,即使源程序是错误的。因为在我看来它应该是可能的。
看起来模式需要是一个正则表达式,所以这会更好吗?
child.expect(['Deleting.*\(pass -k to keep\)', pexpect.EOF], timeout=3000)
# .....................^^^................^
似乎pexpect没有实现tcl期望的glob样式模式。