最近在使用pandas处理excel,需要往excel中写入超过上百张表格。
在使用过程中出现了Permission error写入文件权限失败
快照1.jpg
上网查询相关资料得到答案主要两个原因:1.文件打开被占用;2.文件路径有错。需要通过关闭文件或者修改路径解决。
但是对下面的情形无效:
刚开始测试的时候只向excel中写入单张表或者少数多张表时,按照上述方法,关闭打开的excel文件或者修改正确文件路径确实可以解决这个错误。但是当往excel中导入超过上百张表的时候诡异的一幕出现了:程序又开始报错,还是上面权限的错误,Permission Denied。
#方法一:
#写入数据到excel文件
writer = pd.ExcelWriter(output_file)
for name,data in datas.items():
data.to_excel(writer,sheetname = name)
writer.save()
尝试了关闭excel文件,检查文件路径,删除office缓存仍然报错,后来通过修改每次保存的文件名(保存输出文件名没被之前任何一次使用过),发现可以写成功,但是再执行一次程序来覆盖上次执行的结果,程序又开始报同样的错误(这个新改的文件名只能使用一次,太扯了),关键是在权限报错的情况下每次还能写入部分数据到excel表里面,文件大小每次都不一样,随机。
后来换了一种写入Excel的方式如下:
#方法二:
#写入数据到excel文件
with pd.ExcelWriter(output_file) as writer:
for name,data in datas.items():
data.to_excel(writer,sheetname = name)
程序立马顺利执行,多次测试均正常没有报错。
原因分析:使用方式一写大量数据表到excel中,可能导致文件不能正常关闭,在下次再次写入文件时报权限失败错误。
以后采用第二种方式可以避免上述错误。
网友评论