最近在使用pandas處理excel懂拾,需要往excel中寫入超過上百張表格煤禽。
在使用過程中出現(xiàn)了Permission error寫入文件權(quán)限失敗
上網(wǎng)查詢相關(guān)資料得到答案主要兩個(gè)原因:1.文件打開被占用;2.文件路徑有錯(cuò)岖赋。需要通過關(guān)閉文件或者修改路徑解決檬果。
但是對(duì)下面的情形無效:
剛開始測試的時(shí)候只向excel中寫入單張表或者少數(shù)多張表時(shí),按照上述方法唐断,關(guān)閉打開的excel文件或者修改正確文件路徑確實(shí)可以解決這個(gè)錯(cuò)誤选脊。但是當(dāng)往excel中導(dǎo)入超過上百張表的時(shí)候詭異的一幕出現(xiàn)了:程序又開始報(bào)錯(cuò),還是上面權(quán)限的錯(cuò)誤脸甘,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緩存仍然報(bào)錯(cuò)钝的,后來通過修改每次保存的文件名(保存輸出文件名沒被之前任何一次使用過),發(fā)現(xiàn)可以寫成功铆遭,但是再執(zhí)行一次程序來覆蓋上次執(zhí)行的結(jié)果硝桩,程序又開始報(bào)同樣的錯(cuò)誤(這個(gè)新改的文件名只能使用一次,太扯了)枚荣,關(guān)鍵是在權(quán)限報(bào)錯(cuò)的情況下每次還能寫入部分?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í)行衙伶,多次測試均正常沒有報(bào)錯(cuò)祈坠。
原因分析:使用方式一寫大量數(shù)據(jù)表到excel中,可能導(dǎo)致文件不能正常關(guān)閉矢劲,在下次再次寫入文件時(shí)報(bào)權(quán)限失敗錯(cuò)誤颁虐。
以后采用第二種方式可以避免上述錯(cuò)誤。