我正在用Python编写代码。在代码中,调用用c ++编写的黑盒应用程序。有时这个c ++应用程序不会收敛并出现错误消息。此错误不会终止Python代码,但会暂停运行。单击确定以显示错误消息后,python代码将继续运行,直到代码结束或消息再次出现。有没有办法在Python中处理这个问题:代码检测到消息并点击确定?
由于
答案 0 :(得分:1)
我相信在你的情况下,Python程序实际上并没有继续执行,除非程序在子进程完成时启动 - 这是你所说的用于启动子进程的行为或subprocess.check_call。 p>
只要您使用check_call
启动子进程,就几乎找不到中间子进程状态,直到它实际终止并获得退出代码。
因此,您可以使用subprocess.Popen()构造函数创建一个Popen对象,该对象启动子进程,但不等待子进程完成。这样,您可以通过检查其他输出来隐式验证子进程状态,如果它有希望存在(例如,如果您知道它将错误或其他消息写入stdout或stderr,您也可以读取子进程输出)。
P.S。更好的解决方案 - 修复C ++程序。
答案 1 :(得分:0)
但是,有些解决方法可能对您有用。根据您的平台,您可以使用窗口管理器扩展模块(如pywin32或python-xlib)来搜索对话框,然后以编程方式单击“确定”。
如果你可以使用Jython,你可以使用Sikuli,这是一个非常好用,易于使用的视觉自动化软件包。