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

异常退出期间文件是否关闭?

欧阳声
2023-03-14
问题内容

当脚本由于异常退出时,打开的文件(和其他资源)是否会自动关闭?

我想知道在异常处理期间是否需要关闭资源。

编辑 :更具体地说,我正在脚本中创建一个简单的日志文件。我想知道在例外情况下是否需要担心显式关闭日志文件。由于我的脚本有一个复杂的,嵌套的try /
except块,因此这样做有些复杂,因此,如果python,CLIB或OS在脚本崩溃/出错时要关闭我的文本文件,我就不想在确保关闭文件上浪费了太多时间。

如果Python手册中有涉及这一部分的内容,请向我介绍,但找不到。


问题答案:

不,他们没有。

with如果您希望即使发生异常也要关闭文件,请使用语句。

从文档:

with语句用于使用上下文管理器定义的方法来包装块的执行。这允许将常见的 try … except …最终
使用模式进行封装以方便重用。

从文档:

with语句允许使用诸如文件之类的对象,以确保始终及时,正确地清理它们。

with open("myfile.txt") as f:
    for line in f:
        print line,

执行该语句后f,即使处理行时遇到问题,该文件也始终关闭。提供预定义清除操作的其他对象将在其文档中进行说明。



 类似资料:
  • 想改进这个问题吗 通过编辑此帖子,添加详细信息并澄清问题。 我在“联系人”类中有一个静态类“电子邮件”。在测试中,我有一个例外: 这是测试中的代码: 电子邮件1和联系人。电子邮件是电子邮件类的对象,不是吗?

  • 问题内容: 有没有人见过在任何可关闭对象上调用close方法时引发异常的情况? 问题答案: 一会就被抛出,如果最终失败。可能的原因包括: 文件系统已满,或用户超出配额, 硬盘错误 文件系统被强行卸载, 由于网络或其他问题,远程文件系统不可用, (可能是)通过或类似方式写入文件的字符编码错误, 如果“文件”是设备文件,则设备错误, 如果可关闭设备是网络流,则失去连接, 如果封闭容器是通向外部过程的管

  • 问题内容: 考虑以下代码: 无需添加方法签名即可编译该代码。(它与同样表现到位,太)。 我理解为什么 可以 安全地运行它,因为实际上不能将其引发在块中,因此不能引发已检查的异常。我有兴趣知道在何处指定此行为。 并非永远都不会达到目标:以下代码也会编译: 但是,如果抛出一个检查的异常,它不会像我期望的那样编译: 在JLS Sec 11.2.2中 ,它说: 一,其抛出的表达式语句(§14.18)具有静

  • 我在做一个春靴项目。然后我尝试将mysql数据库连接到那个项目。我得到了名为“hikaripool-1-exception distry pool initialization”的错误。 这是整个StackTrace。

  • 我需要帮助,我正试图创建与FTP服务器的连接,在那里我上传我的文件。 我在java JDK1.8.0_45中使用以下依赖项。当我运行我的代码时,它是建立连接和登录,但当我试图上传文件时,它是抛出异常和上传空文件 依赖性 下面的代码我更改主机可能对你不起作用

  • 问题内容: 如何在不使用Type语句的情况下查看文件是否存在? 问题答案: 如果你要检查的原因是可以执行类似的操作,则尝试使用 来打开它会更安全。检查然后打开可能会导致文件被删除或移动,或者介于检查和尝试打开文件之间。 如果你不打算立即打开文件,则可以使用 True如果path是现有的常规文件,则返回。这遵循符号链接,因此,对于同一路径,和都可以为。 如果你需要确保它是一个文件。 从Python