python判断excel是否已经打开
python判断excel是否已经打开
背景
回归测试的时候,测试的同事发现了一个bug:在excel打开的情况下,仍然能够卸载我们的软件,但是再次安装在相同目录下会报错。
本来在看戏,结果最后bug转给了我。。。。。。
解决过程
首先去搜了一下,发现了这篇文章:https://mp.weixin.qq.com/s?src=11×tamp=1625219064&ver=3166&signature=LNIcCnOofyjkGCc8A8TBdkJL9W9a3V2cX9We8Mm8S8PcnpJkBTrveBdRYTviqxTSYDHQD-SofAwoOcLlaE0BKP6Rz-3XXYtlTGc4tXjfJCP4KF7bHbDXkF-Niwl*Jm3i&new=1
可能是水平不够,所以我并没有实现出来。有了解的朋友们可以给我讲讲。后来又想到了打开excel的时候会出现前缀是~$的临时文件,只要判断临时文件是否存在。附上代码:
def check_excel_is_open():file_path = 'C:\\ProgramData\\xxx\\xxxx\\BmEquipmentLibrary'file_name = 'a.xlsx'temp_file = file_path + '\\' + '~$' + file_nameif os.path.exists(temp_file):print('excel已被打开')
然而,我查了一下本地的excel,后缀为xls。打开后发现,后缀为xls的文件在打开的时候不会出现临时文件,所以上述方法在我这行不通。
后来又问了问旁边的大佬,接着又百度了一下,想到了在打开的情况下,改不了名字。所以想到了改文件名的方法。然而不能让它真的改名字,所以需要再改回来。
附上如下代码:
import os
import easygui
import sysdef check_excel_is_open()->int:#file_path= "C:\\ProgramData\\xxx\\xxxx\\BmEquipmentLibrary"file_path= "C:\\ProgramData\\xxx\\xxxx"filenames = os.listdir(file_path)try:for filename in filenames:os.rename(file_path + "\\"+filename,file_path +"\\tempfile.xls")os.rename(file_path +"\\tempfile.xls", file_path + "\\"+filename)except OSError:easygui.msgbox('excel打开状态,请关闭后尝试卸载!')return sys.exit(2)return sys.exit(1001)if __name__ == '__main__':check_excel_is_open()
至此,算是解决了判断excel是否已经打开
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
