最近在使用pandas處理excel,需要往excel中寫入超過上百張表格。
在使用過程中出現(xiàn)了Permission error寫入文件權(quán)限失敗

快照1.jpg
上網(wǎng)查詢相關(guān)資料得到答案主要兩個原因:1.文件打開被占用;2.文件路徑有錯。需要通過關(guān)閉文件或者修改路徑解決。
但是對下面的情形無效:
剛開始測試的時候只向excel中寫入單張表或者少數(shù)多張表時,按照上述方法,關(guān)閉打開的excel文件或者修改正確文件路徑確實(shí)可以解決這個錯誤。但是當(dāng)往excel中導(dǎo)入超過上百張表的時候詭異的一幕出現(xiàn)了:程序又開始報錯,還是上面權(quán)限的錯誤,Permission Denied。
#方法一:
#寫入數(shù)據(jù)到excel文件
writer = pd.ExcelWriter(output_file)
for name,data in datas.items():
data.to_excel(writer,sheetname = name)
writer.save()
嘗試了關(guān)閉excel文件,檢查文件路徑,刪除office緩存仍然報錯,后來通過修改每次保存的文件名(保存輸出文件名沒被之前任何一次使用過),發(fā)現(xiàn)可以寫成功,但是再執(zhí)行一次程序來覆蓋上次執(zhí)行的結(jié)果,程序又開始報同樣的錯誤(這個新改的文件名只能使用一次,太扯了),關(guān)鍵是在權(quán)限報錯的情況下每次還能寫入部分?jǐn)?shù)據(jù)到excel表里面,文件大小每次都不一樣,隨機(jī)。
后來換了一種寫入Excel的方式如下:
#方法二:
#寫入數(shù)據(jù)到excel文件
with pd.ExcelWriter(output_file) as writer:
for name,data in datas.items():
data.to_excel(writer,sheetname = name)
程序立馬順利執(zhí)行,多次測試均正常沒有報錯。
原因分析:使用方式一寫大量數(shù)據(jù)表到excel中,可能導(dǎo)致文件不能正常關(guān)閉,在下次再次寫入文件時報權(quán)限失敗錯誤。
以后采用第二種方式可以避免上述錯誤。