当 excel 文件被其他程序(如 excel 应用本身)占用时,pandas 默认会因文件锁而报“permission denied”;通过启用 openpyxl 的 `read_only=true` 模式,可在不关闭文件的前提下安全读

在 Windows 系统中,当 Excel 文件(尤其是启用了自动保存的 .xlsx 文件)正被 Excel 桌面应用打开时,操作系统会对该文件加独占读写锁。此时即使你仅使用 pandas 的 pd.read_excel() 进行只读操作,底层引擎(默认为 openpyxl)仍尝试以常规模式打开文件,从而触发权限拒绝错误。
解决方法非常简洁:显式启用 openpyxl 的只读模式。pandas 自 1.4.0 版本起支持通过 engine_kwargs 向底层引擎传递参数。只需在调用 read_excel 时添加:
import pandas as pd
df = pd.read_excel(
"data.xlsx",
engine="openpyxl", # 显式指定(可选,但推荐)
engine_kwargs={"read_only": True}
)✅ 优势说明:
⚠️ 注意事项:
总结:一行 engine_kwargs={"read_only": True} 即可彻底摆脱“必须手动关闭 Excel 才能重跑脚本”的低效流程,显著提升数据分析迭代效率。