继续在Python中运行

时间:2013-11-06 18:05:26

标签: python

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

由于

2 个答案:

答案 0 :(得分:1)

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

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

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

P.S。更好的解决方案 - 修复C ++程序。

答案 1 :(得分:0)

帖木儿是对的。除非C ++程序明确地提供了一种方法来检查状态,响应对话框,或者让它在没有显示对话框的情况下运行,所以根据我所知,python中没有内置任何东西可以解决这个问题。

但是,有些解决方法可能对您有用。根据您的平台,您可以使用窗口管理器扩展模块(如pywin32或python-xlib)来搜索对话框,然后以编程方式单击“确定”。

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