我如何在pexpect中处理这个有问题的程序?

时间:2019-04-17 19:40:29

标签: python shell expect io-redirection pexpect

我使用pexpect自动执行一个名为Instantmusic的程序。有时,该程序会在实际完成之前发送eof。这是一个屏幕截图(如果您无法阅读该屏幕截图,则在问题的末尾,我已链接到更详细的错误报告。): enter image description here

我可以通过使用以下代码来检测适当的结尾:

child.expect(
        ['Deleting*(pass -k to keep)*', pexpect.EOF], timeout=3000)

但是,我的问题是pexpect无法捕捉到超出eof的输出。 (顺便说一句,不使用“ pexpect.EOF”会使pexpect在遇到EOF时抛出异常。)

有没有办法解决这个问题?

PS:我已经更详细地描述了此错误here。但是我通常希望即使源程序有故障也能够处理这种情况。因为在我看来这应该是可能的。

1 个答案:

答案 0 :(得分:0)

似乎模式需要为正则表达式,这样会更好吗?

child.expect(['Deleting.*\(pass -k to keep\)', pexpect.EOF], timeout=3000)
# .....................^^^................^

似乎pexpect没有实现tcl预期的glob样式模式。