擅长:python、mysql、java
<p>简而言之:是的。在</p>
<p>Python通过实现垃圾收集机制,使用户无需管理内存。
这基本上意味着如果没有人使用Python中的每个对象都将被自动释放和删除,以释放内存和资源,以便以后在程序中再次使用它们。在</p>
<p>文件对象是Python对象,与Python中的任何其他对象一样,它们也由垃圾回收器管理。一旦您离开函数作用域,垃圾回收器就会发现没有人使用该文件(使用引用计数器)并处理该对象—这意味着也会关闭该对象。在</p>
<p>要避免这种情况,可以使用<code>os.open</code>打开文件,而不使用Python文件对象,它返回文件描述符(int),而不是Python文件对象。文件描述符不会被垃圾回收器丢弃,因为它不是Python对象,而是一个操作系统对象,因此您的代码可以工作。
但是,您应该小心地稍后关闭(<code>os.close</code>)fd,否则您将泄漏资源,您的程序迟早会崩溃(一个进程只能存储1024个文件描述符,然后无法打开更多的文件)!在</p>
<p>附加信息:</p>
<p>{a1}</p>