python判断excel是否已经打开

本文讲述了如何使用Python判断Excel是否已打开,通过查找临时文件和尝试重命名文件名的方法来确定。作者分享了解决回归测试中遇到的bug过程,包括搜索文章、临时文件策略失效、以及最终的重命名文件验证方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python判断excel是否已经打开

背景

回归测试的时候,测试的同事发现了一个bug:在excel打开的情况下,仍然能够卸载我们的软件,但是再次安装在相同目录下会报错。
本来在看戏,结果最后bug转给了我。。。。。。

解决过程

首先去搜了一下,发现了这篇文章:https://mp.weixin.qq.com/s?src=11&timestamp=1625219064&ver=3166&signature=LNIcCnOofyjkGCc8A8TBdkJL9W9a3V2cX9We8Mm8S8PcnpJkBTrveBdRYTviqxTSYDHQD-SofAwoOcLlaE0BKP6Rz-3XXYtlTGc4tXjfJCP4KF7bHbDXkF-Niwl*Jm3i&new=1
可能是水平不够,所以我并没有实现出来。有了解的朋友们可以给我讲讲。后来又想到了打开excel的时候会出现前缀是~$的临时文件,只要判断临时文件是否存在。附上代码:

def check_excel_is_open():
    file_path = 'C:\\ProgramDa
### 使用Python检查Excel文件是否已被打开 当尝试通过Python操作Excel文件时,确保目标文件未被其他进程占用非常重要。如果文件已经在使用中而再次试图打开它,则可能会遇到权限错误或其他异常情况。 对于Windows环境下的解决方案可以利用`os`模块来检测特定路径下是否有锁定的句柄存在。然而更直接的方式是在尝试访问该文档之前先试着获取独占锁;如果失败则说明此资源正忙于他处[^1]。 另一种方法涉及到了解操作系统层面的信息——即遍历当前活动进程中寻找名称匹配项(例如 `EXCEL.EXE`),并进一步确认这些实例关联的具体文件名或路径。不过这种方法较为复杂且依赖平台特性,在跨平台项目里不推荐采用。 更为简便可靠的做法是借助第三方库如`psutil`配合自定义逻辑实现这一功能: ```python import os import psutil def is_file_open(file_path): for proc in psutil.process_iter(['pid', 'name']): try: if proc.info['name'] == 'EXCEL.EXE': for item in proc.open_files(): if file_path.lower() == item.path.lower(): return True except (psutil.NoSuchProcess, psutil.AccessDenied): continue return False file_to_check = r"C:\path\to\your\example.xlsx" if is_file_open(file_to_check): print(f"{file_to_check} 已经被打开.") else: print(f"{file_to_check} 可以安全地打开.") ``` 上述代码片段展示了如何枚举所有正在运行的Excel应用程序实例,并检查它们所持有的文件列表中是否存在指定的目标文件。这种方式不仅能够有效地判断给定的工作簿是否处于开启状态,而且不会干扰到正常的程序执行流程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值