报错信息:PermissionError: [Errno 13] Permission denied: 'xxx'
场景:
用openpyxl库往excel文件中写入数据、最后执行workbook.save(path)的时候报错。
解决方法:把目标文件关闭,重新执行即可。
分析过程:
在进行excel读写处理前,有通过 if os.path.exists(path) 检查文件路径,可以确定目标文件是存在的。错误原因是我把这个文件打开了,导致python无法对它进行写入操作。
延申思考:
python中的异常处理机制可以捕获到特定类型的Exception。所以我试了一下,把处理放到try模块中,当捕获到PermissionError这个类型的异常时,弹出警告框提醒使用者。
基本结构如下:
def on_Test(self):
try:
path = r'D:\Test\output001.xlsx'
# 把excel文件的读写处理放在这里,具体内容这里忽略
except PermissionError:
print("出现异常")
QMessageBox.information(self, '提示', '请确认该文件已关闭!\n文件路径:'+path)
else:
# 没有异常时执行的处理
print("文件已成功写入")
finally:
# 不管是否有异常都会执行的处理
print("do nothing")
on_Test()是与按钮绑定的一个事件,当用户点击按钮时,执行try中的逻辑,当捕捉到PermissionError异常,弹出MessageBox提醒用户关闭文件。结果可行。
参考文章:
解决Python报错:PermissionError: [Errno 13] Permission denied_python permission denied-CSDN博客