保存Excel工作簿时遇ValueError: I/O操作已关闭文件,同类代码正常
错误原因定位
核心问题
报错的直接原因是:你尝试保存的workbook对象(即wb_target引用的变量)对应的文件指针已经被关闭,导致无法执行I/O操作。
具体分析
从你的代码来看,wb_target = workbook这一行中的workbook变量未在当前代码片段中初始化,它应该来自你代码的其他部分(全局变量或之前的代码块)。如果这个workbook对象在之前的操作中已经被关闭(比如调用了workbook.close(),或者通过with上下文管理器自动关闭),那么后续对它的save()操作就会触发该错误。
其他潜在关联问题
pandas保存Excel的方式不够严谨:你当前使用
GFG.save()的方式,建议改用上下文管理器确保文件句柄正确释放:with pd.ExcelWriter('v_cr_amp_dcp_audit_monitoring_.xlsx') as GFG: df_new.to_excel(GFG, index=False)这不是本次报错的直接原因,但能避免潜在的文件句柄泄漏问题。
copy_sheet函数的影响:如果copy_sheet函数内部对目标工作簿执行了关闭操作,也会导致文件指针失效。建议检查该函数的实现,确保它不会修改目标工作簿的打开状态。
验证与修复方向
- 检查
workbook变量的来源,确认它在赋值给wb_target时处于未关闭的打开状态。 - 如果
workbook是通过上下文管理器打开的,确保当前代码执行时上下文未退出。 - 尝试在当前代码片段中重新初始化
workbook对象(比如用openpyxl.load_workbook()重新加载目标工作簿),而非直接引用外部的workbook变量。
内容的提问来源于stack exchange,提问作者dexmi18
相关产品推荐
相关产品推荐

