我使用subprocess打开excel文件,但我无法杀死它。
import subprocess
p = subprocess.Popen([r"C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE", 'data.xlsx'])
p.wait()
p.kill()
excel文件仍然存在。我在任务管理器中搜索了p.pid,但我找不到该过程。我该怎么办?
答案 0 :(得分:1)
在标准python库中进行一些研究并搜索后,我找到了这个解决方案:
from subprocess import Popen
p = Popen([r"C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE", 'data.xlsx'], shell=True)
if p.poll() is None:
Popen("taskkill /F /IM EXCEL.EXE",shell=True)
我在这里找到了第二部分: Close Excel using CMD
我使用了shell = true,以便在cmd shell窗口中完成命令。 p.poll()基本上询问该程序是否已被杀死,并且还提供了打开excel文件的时间。
经过一段时间的努力之后,我正在回答你的问题,但根据我的经验,除非需要命令行,否则我总是尽量避免使用标准python库或坚固的外部库,因为子进程可以变得漂亮复杂的定时和输入/输出。如果excel文件需要一段时间才能加载,则可能会遇到尝试在文件存在之前关闭文件的问题。所以在这里你可能想要运行一个计时器。
还忘了提到以这种方式杀死任务会丢失文件中任何未保存的数据,就像我说的时间似乎是一个问题。