背景
- 我拿 Excel 作为部分需要手动编辑的数据的 GUI 来用。
- 系统是 windows。
- Excel 打开文件 a.excel。
- 因为有些动作会交替进行,所以在 excel 未关闭该文件的情况下(已保存改动),会进行 python 操作。
后续所有操作都是在 excel 未关闭该文件的情况下进行。 - 比如这时候再在 python 里打开 excel,比如用 pandas。
问题点
- python 绝大部分情况下会报错。我理解就是该 excel 文件已经被占用了。关闭该 excel 文件后恢复正常。
PermissionError: [Errno 13] Permission denied: {filename}
尝试解决
-
最糟的方法,每次 excel 存盘关文件。python 读完,再打开 excel。
-
直接在资源管理器复制粘贴该文件,生成副本。python 访问副本,可以。但是这个方法很麻烦。
-
尝试用 python 做创建副本的操作,失败,同样提示文件被占用。
-
远程访问该文件,未提示权限问题,但需要远程电脑开个 api 做创建副本的操作,也有点繁琐。
请问
-
这个可能涉及 windows 的基础知识,刚好是我的盲区。想知道为什么资源管理器可以复制,但 python 复制就会提示被占用?
-
有没有办法更方便地在 excel 不关闭文件的情况下,让 python 读取到该文件的内容。比如 pandas 有没有只读参数啥的?
-
同理,如果是只读操作,那 python 在复制该文件时,也会被提示占用?复制文件我用的 shutil.copy,是不是它同时还会复制某些属性,导致了问题?
