如何在pexpect中处理这个错误的程序?

问题描述 投票:-1回答:1

我使用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。但我通常希望能够处理这种情况,即使源程序是错误的。因为在我看来它应该是可能的。

python shell expect io-redirection pexpect
1个回答
0
投票

看起来模式需要是一个正则表达式,所以这会更好吗?

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

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

© www.soinside.com 2019 - 2024. All rights reserved.