美文网首页
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内存释放不彻底导致报

    python由于内存管理的问题,在excel存档复写的过程容易导致excel被占用,然后复写失败,进而导致exce...

  • 记一次python内存溢出

    问题: openxl在处理一个excel文件时,由于文件和库的问题,导致python占用内存飙升,不断增长,最终占...

  • python内存释放

    Python内存释放 python话说会自己管理内存,实际上,对于占用很大内存的对象,并不会马上释放。举例,a=r...

  • python读文件,存excel

    用python逐行读取文件,取需要的字段保存到excel中

  • 闭包的作用

    闭包:内部函数保存到外部 当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域链不释放,造成内存泄漏(内存...

  • Python 源码剖析(一)【python对象】

    处于研究python内存释放问题,在阅读部分python源码,顺便记录下所得。(基于《python源码剖析》(v2...

  • Pipenv一键搭建python虚拟环境

    由于python2和python3在部分语法上不兼容, 导致有人打趣道:"Python2和Python3是两门语言...

  • Python内存管理机制

    转载: Python内存管理机制 c/c++中:通过malloc和free进行内存的申请和释放 python/ja...

  • Python基础知识

    一、Python简介 Python 是一种解释型语言,在 Python 中,由于内存管理是由 Python ...

  • 学习网址

    1. python 1.1 python-excel 1.1.1http://www.python-excel.o...

网友评论

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

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