今天例行用openpyxl处理excel时,突然报错如下(找了段差不多的报错样例):
Traceback (most recent call last):
File "c:\users\pranu\appdata\local\programs\python\python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "", line 44, in get1
wb.save('E://invoice.xlsx')
File "c:\users\pranu\appdata\local\programs\python\python38-32\lib\site-packages\openpyxl\workbook\workbook.py", line 392, in save
save_workbook(self, filename)
File "c:\users\pranu\appdata\local\programs\python\python38-32\lib\site-packages\openpyxl\writer\excel.py", line 291, in save_workbook
archive = ZipFile(filename, 'w', ZIP_DEFLATED, allowZip64=True)
File "c:\users\pranu\appdata\local\programs\python\python38-32\lib\zipfile.py", line 1251, in __init__
self.fp = io.open(file, filemode)
PermissionError: [Errno 13] Permission denied: 'E://invoice.xlsx'
然后试了网上几种方案:
1.文件打开了。(打没打开我看不到吗,我根本没打开)
2.文件夹只读。win10似乎是部分只读自动勾选,用attrib命令查看,文件夹没有只读属性。同时用户权限设定为完全允许,还是报错PermissionError。看来也不是只读问题。
3.openpyxl内存没有释放。理论来说我文件比较小,不应该会有这个情况。试了close()以及释放内存等形式,并没有改善。还是时好时不好。
最后我在测试创建副本时,无意间发现复制失败,报错是DFSsearchservice占用了文件。我一看,原因这不就找到了吗。原来是华为电脑自带的电脑管家,不知道为啥给我开启了智慧搜索功能。这个搜索的进程DFSsearchservice.exe对文件造成了占用。只需要在电脑管家里关闭该功能即可。今后类似情况,也要考虑是不是有其他程序占用文件,例如网盘,onedrive等,举一反三。