如何将已经运行的进程(如Excel)分配给Python对象(PyWin32)以关闭它
所以我想做的是:如何将已经运行的进程(如Excel)分配给Python对象(PyWin32)以关闭它,python,excel,pywin32,Python,Excel,Pywin32,所以我想做的是: 打开Excel工作簿并在单元格中输入一些值 使用Pandas读取Excel文件,将其转换为数据帧 在数据帧上执行一些操作 关闭工作簿(我想自动执行此步骤,但在Excel文件仍处于打开状态时无法写入输出) 将结果输出到同一工作簿的其他工作表中 重新打开Excel工作簿以检查结果 具体来说,第4步是我遇到一些问题的地方,我必须关闭Excel,否则会出现错误(PermissionError:[Errno 13])。我知道如何使用PyWin32打开Excel应用程序并执行任何操作,但是
导入操作系统
输入信号
导入psutil
def kill_proc_树(pid,sig=signal.SIGTERM,include_parent=True,
超时=无,on_终止=无):
“”“使用信号杀死进程树(包括子进程)
“sig”并返回一个(不见了,还活着)元组。
“on_terminate”(如果指定)是一个callabck函数,它是
孩子一结束就给他打电话。
"""
断言pid!=os.getpid(),“不会自杀”
父进程=psutil.Process(pid)
children=parent.children(递归=True)
如果包括家长:
附加(父级)
对于儿童的p:
p、 发送信号(sig)
消失,活动=psutil.wait\u程序(子项,超时=超时,
callback=on_终止)
返回(消失,活着)
请参阅。对不起,我想我找到了解决我想要的问题的方法,但我想我可能一开始就在这里描述了我的问题。基本上,我只是想要一个代码来关闭一个已经打开的Excel应用程序(也许应该这样说,而不是工作簿),并将一些结果写入其中,然后重新打开它
import os, sys
import tempfile
import win32com.client
from pathlib import Path
filename = Path.cwd() / "ExcelFile.xlsx"
# Obtains the opened Excel instance
wb1 = win32com.client.GetObject(str(filename))
# Closes Excel
wb1.Application.Quit()
# Do whatever here like writing output in that Excel Workbook
# Reopen that Excel file
os.startfile(filename)
被发现是有用的。再次为误导性的描述表示歉意。请显示相关代码以及您迄今为止的尝试。