python - 如果我读了一个文件之后没有关闭它会怎样?

标签 python file-io

我曾经这样阅读文件:

f = [i.strip("\n") for i in open("filename.txt")]

效果很好。我更喜欢这种方式,因为它比网络上可用的传统文件读取代码示例(例如 f = open(...) 、for line in f.readlines() 、 f.close())更简洁、更短。

但是,我想知道读取这样的文件是否有任何缺点,例如因为我没有关闭文件,Python 解释器会自己处理吗?使用这种方法有什么我应该注意的吗?

最佳答案

这是推荐的方式:

with open("filename.txt") as f:
    lines = [line.strip("\n") for line in f]

另一种方式可能长时间不会关闭输入文件。这对您的应用程序可能无关紧要。

with 语句负责为您关闭文件。在 CPython 中,只要让文件句柄对象被垃圾回收就应该为您关闭文件,但在其他 Python 风格(Jython、IronPython、PyPy)中,您绝对不能指望这一点。此外,with 语句使您的意图非常明确,并且符合惯例。

关于python - 如果我读了一个文件之后没有关闭它会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17781906/

相关文章:

python - Django 'str' 对象在 rest_framework 中没有属性 'values'

python - 将 POST 请求正文作为数组的 JSON 作为 flask-restful 中的根节点

java - 如何更改SLF4J SimpleLogger文件名?

python - 如何在数据框中进行条件日期格式化

python - GCS - 从谷歌云存储直接读取文本文件到 python

c# - 简单文件 I/O - 读取新行

即使指定了绝对路径,Scala io.Source.fromfile 也找不到我的文件

image - 如何在 MATLAB 7.0 版本中读取和写入 DICOM 图像?

c - fscanf 读访问段错误

python - 无法打开库 'ODBC Driver 17 for SQL Server' : file not found