【问题标题】:Open file I/O memory management in python在 python 中打开文件 I/O 内存管理
【发布时间】:2017-04-27 16:29:22
【问题描述】:

我正在编写一个包含大量天气观测列表的脚本。对于列表中的每个天气观测,代码会打开该时间的天气雷达文件。然后它提取一些数据并移动到下一行/观察。

为了安全起见,我想在进入下一行时关闭天气雷达文件。这是我所做的简化版本:

    synop = open(filename).read().splitlines()
    synop.close()

第一行很好,以后我可以用 synop 做一些事情。尝试关闭 synop 会导致问题,因为它是 type = list

是否有其他方法可以关闭我正在访问的文件?还是python会在第一行代码之后自动关闭文件?

我将在大约4.5m 个文件,所以我需要良好的内存管理!

【问题讨论】:

    标签: python file memory io


    【解决方案1】:

    问题在于您没有保留 file 对象。 Python 将在第一行之后为您关闭文件,但这不正确也不是 pythonic,因为它不明确。

    一种正确的方法是保留file 对象,如下所示:

    f = open(filename)
    synop = f.read().splitlines()
    f.close()
    

    但最好的方法是使用context management

    with open(filename) as f:
        synop = f.read().splitlines()
    

    此范围结束后,Python 将立即为您关闭文件。

    【讨论】:

      猜你喜欢
      • 2016-11-16
      • 1970-01-01
      • 2011-01-19
      • 2022-11-25
      • 2015-10-28
      • 2015-11-28
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多