python析构_Python⽂件对象、关闭和析构函数
tempfile.NamedTemporaryFile()的描述是:If delete is true (the default), the file is deleted as soon as it
is closed.
在某些情况下,这意味着在
Python解释器结束。例如,在下运⾏以下测试时
import tempfile
import unittest2 as unittest
class cache_tests(unittest.TestCase):
def setUp(self):
self.dbfile = tempfile.NamedTemporaryFile()
def test_get(self):
self.assertEqual('foo', 'foo')
在某种程度上这是有意义的,因为这个程序从来没有显式地
关闭⽂件对象。唯⼀能让物体闭合的⽅法
可能在__del__析构函数中,但是这⾥的语⾔
引⽤声明“不能保证__del__()⽅法
为解释器退出时仍存在的对象调⽤。“所以
到⽬前为⽌,⼀切都与⽂档⼀致。在
然⽽,我不明⽩这意味着什么。如果不是的话
保证⽂件对象在解释器出⼝关闭,对吗
可能的情况是某些数据成功写⼊
(缓冲)⽂件对象丢失,即使程序正常退出,
因为它仍然在file对象的缓冲区中
从来没关门过?在
不知怎么的,这对我来说似乎不太可能,也不是Python
⽂档也不包含任何此类警告。所以我
(暂定)得出结论:毕竟,⽂件对象保证
关闭。在
但是这种魔⼒是如何发⽣的,为什么NamedTemporaryFile()不能使⽤
python解释器下载同样的魔法确保⽂件被删除?在
编辑:注意,这⾥我不是在谈论⽂件描述符(由操作系统缓冲,在程序退出时由操作系统关闭),⽽是关于Python⽂件对象,它们可以实现⾃⼰的缓冲。在
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论