首页 > 解决方案 > 如何关闭具有特定标题或窗口名称的子进程(具有多个打开文件的 Excel)?

问题描述

我正在编写一个脚本,但无法关闭在 Windows 中打开的一个 excel 文件。Microsoft Excel 中有许多打开的文件,但我没有在 python 中将它们作为 f.open() 打开。在脚本完成之前,它必须写入相同的 excel 文件,如果文件打开错误并且脚本中断。

我可以关闭具有特定标题(如 file1、file2、file3)的多个 MS-Excel 窗口之一在 excel 中打开,我只想关闭 file2.xlsx

import os
file3= output.xlsx
os.close(file3)
writer = pd.ExcelWriter('Output.xlsx', engine='xlsxwriter')

标签: pythonpython-3.xautomationoperating-systemtaskkill

解决方案


我不确定有没有办法完全使用窗口标题,我认为更好的方法是使用有关每个进程使用哪些文件的系统信息

from psutil import Process
from os import kill
from signal import SIGQUIT
def close_one_excel(filename, subprocesses):
    """ Kills the process from `subprocesses` array,
    that uses the `filename` file """
    for i in subprocesses:
        p = Process(i.pid)
        if filename in p.open_files():
            kill(p.pid, SIGQUIT)

推荐阅读