从Python关闭pdf文件或exe-application

时间:2012-07-16 09:32:05

标签: python pyqt

  1. 我的应用程序正在根据用户的请求(按钮)打开带有os.startfile的pdf文件。当用户再次按下按钮时,有没有办法关闭此pdf?如果没有这样做,我会收到错误:

    WindowsError:[错误32]进程无法访问该文件,因为另一个进程正在使用该文件:'default_report.pdf'

    编辑:在Python中我得到:QPainter::begin(): Returned false(WindowsError来自可执行文件)。我可以用try以某种方式捕捉这个错误吗?至少要求用户手动关闭pdf ...

  2. 另一个相关问题。我的应用程序被编译为可执行文件,并从另一个VB6应用程序(也在按钮上)调用。有没有办法从Python中检测到可执行文件已经在运行(exe文件总是具有相同的位置)并在这种情况下在再次启动它之前将其终止?问题类似,如果我第二次运行可执行文件,因为它们开始冲突(他们使用公共数据库),我得到错误。从VB6它不起作用,我不知道细节...

    修改:用psutil解决(请参阅我对jheyse的回答评论)

  3. P.S。如果重要的话,我会使用Python 3.2,PyQt 4和cx_freeze进行exe生成。

1 个答案:

答案 0 :(得分:2)

1.我不认为它是直接可能的,因为docs说“startfile()在关联的应用程序启动后立即返回。没有选项等待应用程序关闭,没有检索应用程序退出状态的方法。“

2.要从python中按名称终止进程,可以使用psutil module。这样的事情(如果打开的话,下面的代码会杀死windows计算器):

for p in psutil.process_iter():
    if p.name == 'calc.exe':
        p.kill()