一尘不染

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

python

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

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

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

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

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


阅读 133

收藏
2020-12-20

共1个答案

一尘不染

参见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()

2020-12-20