Byt*_*der 11
文件什么时候关闭?
正如我们可以从明确关闭文件重要吗?(StackOverflow),Python 解释器会在以下情况下关闭文件:
close()方法。这当然始终适用于任何 Python 实现。filewith open(...):file对象的最后一个引用得到了删除,因此该对象被通过垃圾收集处理。这不是语言特性,而是 CPython 实现的一个特殊特性,所以为了可移植性,不要依赖于此!所以只有第一种(手动)方法是可靠的!
如果文件保持打开状态会发生什么?
首先,根据你的 Python 解释器的实现,如果你打开一个具有写访问权限的文件,你不能确保你的修改被刷新到磁盘,直到你手动诱导它或文件处理程序被关闭。
其次,每个用户只能在系统上打开有限数量的文件。如果你超出了这个限制,例如在你的 Python 程序中循环打开许多文件而不尽快关闭它们,系统可能会拒绝为你打开更多的文件句柄,你会收到一个异常。也有可能您的程序使用最后一个允许打开的文件,而另一个程序会因为被拒绝而失败。
第三,在可移动设备上打开文件可以防止它被卸载或弹出。您仍然可以在某些文件系统上删除文件,例如ext4,其中只是删除/取消链接到文件 inode 的文件描述符/硬链接,但打开文件的程序仍然可以通过其自己的临时文件处理程序访问 inode。例如,这也是允许您在相应软件运行时更新软件包的机制。但是,例如 NTFS 没有这样的功能。然而,它可能永远不会被两个并发进程修改,所以它仍然会以某种方式被其他进程阻塞。
| 归档时间: |
|
| 查看次数: |
42861 次 |
| 最近记录: |