如何在__del__()中执行复杂的操作?

我想实现一个功能,在一个类销毁时把一些数据记录到excel,我用的方法是在__del__()里使用openpyxl。但当程序终止时自动执行的__del__()会触发异常。应该是python退出时进入了某种状态导致的,不同用法触发不同错误。如果用新建xlsx方式,在save时会触发ImportError: sys.meta_path is None, Python is likely shutting down异常。

因为对象何时关闭是不可预知的,我只想到__del__()的方法。请问有什么办法实现我想要的功能?谢谢。
image
image

阅读 2.8k
3 个回答
新手上路,请多包涵
新手上路,请多包涵

在Python中不建议自定义__del__方法,具体原因见官方文档

我试了一下,在__del__中文件io是没有效果的。但连接数据库没有问题哦。你可以考虑把数据存到本地或内存sqlite数据库里。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题