pandas處理excel踩的坑之Permission Denied

最近在使用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)限失敗錯誤。

以后采用第二種方式可以避免上述錯誤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容