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