美文网首页
python保存到excel由于python内存释放不彻底导致报

python保存到excel由于python内存释放不彻底导致报

作者: 长旅当歌 | 来源:发表于2023-01-28 11:18 被阅读0次

    python由于内存管理的问题,在excel存档复写的过程容易导致excel被占用,然后复写失败,进而导致excel文件损坏;
    找了一些文章,主要是介绍gc机制和代码的,做了尝试不好用;
    介绍一个新的方案,把writer部分独立包装成一个函数,通过try函数来执行,执行成功返回1,执行失败返回0,这样就可以彻底吧writer包装在函数内部,确保顺利执行并且完整退出。
    然后通过执行结果判断如果保存失败,就再进行一次保存。可以彻底解决excel覆写失败报错导致文件损坏的问题。

    实际执行时候直接执行 SaveDataFrameToExcel(df,ExcelNameStr)即可

    def DataExcelWriter(df,ExcelNameStr):
        #因为python内存释放机制问题,有几率导致数据存储到本地过程中保存失败
        #所以设置保存检查,成功返回1,失败返回0;如果保存失败会导致  DataExcelWriter() 函数结束重新执行,可以有效的释放原有的句柄占用
        #ExcelNameStr表示完整的excel名称包含格式后缀,例如'xxx.xlsx'
        try:
            with pd.ExcelWriter(ExcelNameStr) as writer:
                df.to_excel(writer,sheet_name=ExcelNameStr,index=False)
        except:
            return 0
        return 1
    
    def SaveDataFrameToExcel(df,ExcelNameStr):
        #以下为保存操作的主函数
        count=0
        while (DataExcelWriter(df,ExcelNameStr)==0):
            print("...保存中...{}".format(count))#输出保存操作的次数
            count=count+1
        print("保存完成")
        return

    相关文章

      网友评论

          本文标题:python保存到excel由于python内存释放不彻底导致报

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