白云岛资源网 Design By www.pvray.com
最近工作中需要去判断远程服务器上的某个Excel文件是否被打开,如果被人打开,则等待,如果没人打开使用,则去填写数据进Excel文件。
开始想的很简单,和其他语言一样,比如C#,打开文件,如果报错说明被占用,结果发现,Excel文件被其他人打开的情况下,python里面用可写'w'的方式打开文件,实际上并没有报错,执行完成也没任何错误,只是最后看Excel文件里面,发现实际要写入的东西并没被写入。
然后在网上找了一些方法,比如用openpyxl,pywin32等等,发现都做不到真正去判断Excel文件是否被其他人打开了。
后来想到一个解决方法:判断是否有“~$”开头的同名文件在同级目录下存在:比如test.xlsx被打开后会存在~$test.xlsx文件,如果没被打开则没有该文件。
Excel文件(具体来说应该是MS office文件)每次被打开后其实是会创建一个隐藏的"~$"开头的系统隐藏文件,比如打开test.xlsx后同级目录下其实是会有~$test.xlsx文件:
因为~$test.xlsx是系统隐藏文件,如果要看到的话,需要显示所有系统隐藏文件信息,方法如下:
- 点击任一文件夹左上角的“文件”
- 点击“选项”打开“文件夹选项”
- 点击“查看”条目,勾选“显示隐藏的文件、文件夹和驱动器”,然后去掉“隐藏受保护的操作系统文件(推荐)”的勾选
这样就可以看到~$test.xlsx这个隐藏文件了。
知道了这个方法后,要去判断Excel文件是否被打开就很容易了,只需要判断~$test.xlsx文件是否存在即可,如果存在则认为test.xlsx文件被人打开,等待关闭,否则则认为该文件没人打开,直接编辑即可。
对于本地和远程服务器上的Excel文件否是被打开都可以用该方法。
白云岛资源网 Design By www.pvray.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
白云岛资源网 Design By www.pvray.com
暂无评论...