当前位置: 首页 > 面试题库 >

python如何关闭已经gc'ed的文件?

乐正焕
2023-03-14
问题内容

我一直以为如果在未关闭的情况下打开文件就会泄漏文件,但是我只是验证了如果输入以下代码行,文件将关闭:

>>> f = open('somefile.txt')
>>> del f

出于好奇,这是如何工作的?我注意到该文件不包含__del__方法。


问题答案:

至少在CPython中,当释放文件对象时,文件是关闭的。请参阅CPython源代码中的file_dealloc函数Objects/fileobject.c__del__除没有C固有的问题外,Dealloc方法类似于C类型__del__



 类似资料:
  • 我们不允许对书籍、工具、软件库等寻求建议的问题。您可以编辑问题,以便用事实和引文来回答。 有谁知道一个免费的反编译器可以反编译整个Jar文件而不是单个类?我对name$1这样的子类有问题。类名$2。类名。班

  • 我有下面的代码,我想在它上面关闭preparedStatement对象,因为它是作为一个来自sonar的bug提出的。 如何关闭preparedStatement对象?我看到的大多数示例大多使用try/finally或try with resources,然后创建对象并使用它try and close in finally。然而,在这里,对象是在单独的函数中创建的,它从那里返回,然后被使用。所以创

  • 这个问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这个问题的解决方式不太可能对未来的读者有所帮助。 我正在试图找到列表的中间值。我试过两种方法,但都不管用(我已经导入了我需要的东西,列表就在那里)。自拍是列表的名称 这就是错误 ret = umr_sum(arr, axis, dtype, out, keepdims) TypeError:无法对灵活类型执行reduce 另

  • 想改进这个问题吗 通过编辑这篇文章,添加细节并澄清问题。 编辑问题可以使用selenium驱动程序的sned_keys()方法解决。 我正在开发一个webwhatsapp垃圾邮件脚本,我想做以下事情: 我们在标签之间写的东西作为whatsapp“发送消息”功能的输入。 我想做 我怎么能这样做?我是python的新手。

  • 我尝试用apache PDFBox保存PDF文件,但出现错误 java.io.IOException:COSStream已关闭,无法读取。也许它所附的PDDocument已经关闭了? 出什么事了?

  • 本质上,我试图用Java创建一个小工具,从某种用户输入中获取文本,想象一个普通的文本框,并用它创建一个PDF文件。 到目前为止,我用我对pdfbox的基本知识很快地学到了一些东西。 在我的应用程序中,我在另一个带有GUI元素的应用程序中实例化这个类(如下所示),如果我输入文本,比方说在一个文本框中,并且运行这个脚本一次--它运行起来非常好,但是第二次运行它,它就会崩溃,并给我带来这个恼人的错误: