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

如何在python 2.4中安全地打开/关闭文件

谢志文
2023-03-14
问题内容

我目前正在编写一个小脚本,供在使用Python的一台服务器上使用。该服务器仅安装了Python 2.4.4。

直到2.5版本问世,我才开始使用Python,所以我习惯了这种形式:

with open('file.txt', 'r') as f:
    # do stuff with f

但是,with在2.5之前没有声明,而且我很难找到有关手动清理文件对象的正确方法的示例。

使用旧版本的python时安全处置文件对象的最佳实践是什么?


问题答案:

参见docs.python.org:

处理完文件后,调用f.close()将其关闭并释放打开文件占用的所有系统资源。调用f.close()之后,尝试使用文件对象将自动失败。

因此可以close()优雅地与try/finally

f = open('file.txt', 'r')

try:
    # do stuff with f
finally:
    f.close()

这样可以确保即使# do stuff with f引发异常,f也仍然可以正确关闭。

需要注意的是open应该出现 之外try。如果open自身引发异常,则说明文件未打开,因此不需要关闭。另外,如果open引发异常,则
不会 分配其结果,f并且调用会出错f.close()



 类似资料:
  • 问题内容: 我需要一种从数据库中获取一些数据并防止用户在那一刻修改现有数据的方法。 我创建了一个SwingWorker来进行数据库更新,并创建了一个模态JDialog来向用户显示正在发生的事情(使用JProgressBar)。模态对话框的defaultCloseOperation设置为DO_NOTHING,因此只能通过适当的调用将其关闭- 我使用。 SwingWorker在doInBackgrou

  • 问题内容: 我正在尝试使用$ log.debug(“ Foo”)。如何将其关闭。我在任何地方都找不到样品。我认为它需要在配置中设置,但我似乎也无法使其正常工作。 哪里设置开关? 问题答案: $ logProvider.debugEnabled(true) 仅在AngularJs 1.1.2或更高版本中可用。 https://github.com/angular/angular.js/pull/16

  • 问题内容: 我在自己的容器中运行Jenkins。我使用命令“ nohup java -jar jenkins.war –httpsPort = 8443”。 如何安全关闭它?现在,我使用kill命令杀死该进程。 问题答案: 是的,如果您使用内置的Winstone容器运行Jenkins,则kill应该可以。 此Jenkins Wiki页面 包含一些有关如何为Jenkins设置控制脚本的提示。

  • 我把詹金斯放在自己的容器里。我使用命令“nohupjava-jarjenkins.war--httpsPort=8443”。 我如何安全地关闭它?现在,我使用了杀死命令来杀死进程。

  • 我试图在本地计算机上使用swagger-ui打开我自己生成的swagger规范文件。 所以我下载了最新的标签V2.1.8-M1并提取了zip。然后进入子文件夹并将文件复制到其中。现在,我打开了,想要浏览。问题就从这里开始了: 如果我输入一个本地路径,它总是以包含的当前url作为前缀。因此我无法打开我的档案。我尝试了以下所有组合,但没有成功: null

  • 我复制了一个模板从coDepen。这段代码非常过时,有一些旧的cdn链接。这意味着我必须找到这些链接的更新版本。我是如此接近使应用程序完全功能,我需要打开后关闭模式。我相信这和自举有关。链接和模态代码如下。