美文网首页
pandas处理excel踩的坑之Permission Deni

pandas处理excel踩的坑之Permission Deni

作者: 乡上香树 | 来源:发表于2020-11-27 11:27 被阅读0次

    最近在使用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中,可能导致文件不能正常关闭,在下次再次写入文件时报权限失败错误。

    以后采用第二种方式可以避免上述错误。

    相关文章

      网友评论

          本文标题:pandas处理excel踩的坑之Permission Deni

          本文链接:https://www.haomeiwen.com/subject/ftxxwktx.html