本文介绍了如何完成 - 在__del__上打开文件写入?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图做一些关于class obj破坏的活动。
如何在_del__函数中打开文件?
(我使用Python 3.4)
class iam(object):
def __init __(self):
print(I m born)$ b
$ b def __del __(self):
f = open(memory_report.txt,w)
f.write(He safe safe)
f.close()
if __name__ =='__main__':
i = iam()
print (脚本结束,现在GC清理内存)
输出:
我m
脚本结束。现在GC清理内存
在< __ main __中的<绑定方法iam .__ del__>< 0x00000000022F1A58>处的iam对象>>中忽略了异常。
Traceback(最近的最后一次调用):
文件F:\Kumaresan\Code\Python\CommonLib\src\kmxPyQt\devConsole3\tet.py,第14行,在__del__
NameError:name'open'is not defined
解决方案正如其他人所提到的,不要使用____del___方法来执行这种清理。相反,使用contextmanagers( with -statement)或注册atexit-handlers。
I m trying to do a some activity on class obj destruction.How do I achive file open in _del__ function?(I m using Python 3.4)
class iam(object):
def __init__(self):
print("I m born")
def __del__(self):
f = open("memory_report.txt", "w")
f.write("He gone safe")
f.close()
if __name__ == '__main__':
i = iam()
print("Script Ends. Now to GC clean memory")
Output:
I m born
Script Ends. Now to GC clean memory
Exception ignored in: <bound method iam.__del__ of <__main__.iam object at 0x00000000022F1A58>>
Traceback (most recent call last):
File "F:\Kumaresan\Code\Python\CommonLib\src\kmxPyQt\devConsole3\tet.py", line 14, in __del__
NameError: name 'open' is not defined
解决方案
As others have mentioned, don't use the ____del___ method to perform such cleanup. Instead, use either contextmanagers (with-statement) or register atexit-handlers.
这篇关于如何完成 - 在__del__上打开文件写入?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!