COM:excelApplication.Application.Quit()保留进程
我正在使用COM
集成从Python 2.7驱动MS Excel。我注意到一个奇怪的事情:当我运行以下代码时:
import win32com.client
excelApp = win32com.client.dynamic.Dispatch('Excel.Application')
的EXCEL.EXE
过程中出现的过程列表(视图中使用Windows任务管理器或上subprocess.Popen('tasklist')
)按预期方式。然后,我会做所有我不需要做的事情。但是,当我关闭Excel时:
excelApp.Application.Quit()
即使我关闭了启动它的Python解释器,该过程仍然会持续(这种情况很有意义,因为Excel在不同的过程中运行,但可以肯定)。我发现终止此过程的唯一方法是手动使用任务管理器,或通过调用:
subprocess.Popen("taskkill /F /im EXCEL.EXE",shell=True)
强制/F
标记是必需的,否则该过程不会终止。
这不是一个真正的问题(我希望),但是我想问一下,当我首先“正常”编辑文档,然后从python调用Excel,然后再次“正常”调用文档时,是否会引起问题?可能连续很多(几打)次?我担心的是创建有冲突的文档等版本。还是EXCEL.EXE
为了安全起见,我应该每次都终止该过程吗?
我也注意到,subprocess.Popen("taskkill")
它不会返回任何我可以catch
并且可能会返回的异常(或者我在这里做些什么吗?)。我对区分“不存在的进程”杀死尝试和终止进程的失败尝试特别感兴趣。