0

我正在用 Python 编写代码。在代码中,调用了一个用 c++ 编写的黑盒应用程序。有时这个 c++ 应用程序不收敛并且出现错误消息。此错误不会终止 Python 代码,但会暂停运行。单击确定以获取错误消息后,python 代码将继续运行,直到代码结束或消息再次出现。有没有办法在 Python 中处理这个问题:代码检测到消息并单击确定?

谢谢

4

2 回答 2

1

我相信在您的情况下,Python 程序实际上并没有继续执行,除非程序作为子进程完成启动 - 这是您所说的用于启动子进程的行为或 subprocess.check_call

只要您使用 启动子进程check_call,几乎没有办法找出中间子进程状态,直到它实际终止并获得退出代码。

因此,您可以使用subprocess.Popen()构造函数创建一个Popen对象,该对象启动子进程,但不等待子进程完成。这样,您可以通过检查子进程的其他输出来隐式验证子进程状态,如果有任何希望存在的话(例如,如果您知道子进程将其错误或其他消息写入标准输出或标准错误,那么您也可以阅读子进程输出)。

PS 更好的解决方案 - 修复 C++ 程序。

于 2013-11-06T20:58:30.153 回答
0

帖木儿是正确的。除非 C++ 程序明确地为您提供检查状态、响应对话框或使其运行而不显示对话框的方法,否则据我所知,python 中没有任何内置可以解决此问题的方法。

不过,有一些解决方法可能对您有用。根据您的平台,您可以使用窗口管理器扩展模块(如 pywin32 或 python-xlib)来搜索对话框并以编程方式单击 Ok。

如果你可以使用 Jython,你可以使用Sikuli,这是一个非常好的、易于使用的可视化自动化包。

于 2013-11-08T15:43:51.783 回答