|
6.2.2. 关闭文件
打开文件消耗系统资源, 并且依赖于文件模式, 其它程序或许不能访问它们。这就是一旦操作完毕就该关闭文件的重要所在。
例 6.5. 关闭文件
>>> f
<open file '/music/_singles/kairo.mp3', mode 'rb' at 010E3988>
>>> f.closed
False
>>> f.close()
>>> f
<closed file '/music/_singles/kairo.mp3', mode 'rb' at 010E3988>
>>> f.closed
True
>>> f.seek(0)
Traceback (innermost last):
File "<interactive input>", line 1, in ?
ValueError: I/O operation on closed file
>>> f.tell()
Traceback (innermost last):
File "<interactive input>", line 1, in ?
ValueError: I/O operation on closed file
>>> f.read()
Traceback (innermost last):
File "<interactive input>", line 1, in ?
ValueError: I/O operation on closed file
>>> f.close() 文件对象的 closed 属性表示对象是否打开或关闭了文件。在本例中,文件仍然打开着 (closed 是 False)。打开文件要消耗系统资源,并且根据文件模式,其它程序可能不能使用它们。一旦你处理完它们,把文件关闭这一点很重要。
为了关闭文件,调用文件对象的 close 方法。这样就释放掉你加在文件上的锁 (如果有的话),刷新被缓冲的系统确实还未写入的输出 (如果有的话),并且释放系统资源。
closed 属性证实了文件被关闭了。
只是因为文件被关闭,并不意味着文件对象停止存在。变量 f 将继续存在,直到它 超出作用域 或被手工删除。然而,一旦文件被关闭,可操作打开文件的方法没有一个能使用;它们都会引发异常。
对一个文件已经关闭的文件对象调用 close 不会 引发异常,它静静地失败。 |
|