Python使用XlsxWriter覆盖XLSX文件报Permission denied错误如何解决
解决方案
错误原因排查
首先排查两个最常见的触发原因:
- 检查之前生成的
mismatch.xlsx是否处于打开状态,Windows系统下打开的Excel文件会被系统加独占锁,此时程序尝试写入就会报13号权限错误,关闭文件后重新运行即可。 - 检查代码内的文件名拼写:你提供的代码中文件名写的是
mismtach.xlsx,正确拼写为mismatch.xlsx,路径拼写错误也可能引发权限类报错。
覆盖写入逻辑实现
xlsxwriter本身为只写模式,不支持修改现有Excel文件,要实现「文件存在则清空旧数据写入新内容,不存在则新建」的需求,直接在创建工作簿前判断文件是否存在、存在则先删除即可,完整代码示例如下:
import os import xlsxwriter # 统一声明文件路径,避免拼写错误,路径前加r防止转义 file_path = r'C:\你的指定路径\mismatch.xlsx' # 判断文件是否存在,存在则先删除 if os.path.exists(file_path): try: os.remove(file_path) except PermissionError: print("文件被占用,请关闭已打开的mismatch.xlsx后重试") # 终止程序运行 exit() # 原有写入逻辑替换路径即可 with xlsxwriter.Workbook(file_path) as workbook: worksheet = workbook.add_worksheet() worksheet2 = workbook.add_worksheet() worksheet3 = workbook.add_worksheet() for row_num, data in enumerate(mismatch_true): worksheet.write_row(row_num, 0, data) for row_num2, data2 in enumerate(semi): worksheet2.write_row(row_num2, 0, data2) for row_num3, data3 in enumerate(quarter): worksheet3.write_row(row_num3, 0, data3)
上述代码逻辑同时增加了文件占用的异常捕获,遇到文件被锁定的情况会直接给出明确提示,方便快速定位问题。
内容的提问来源于stack exchange,提问作者Zenith_1024
相关产品推荐
相关产品推荐

