在python

时间:2016-12-12 18:20:19

标签: python file memory io

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

为了安全使用内存,我想在移动到下一行时关闭天气雷达文件。这是我所做的简化版本:

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

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

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

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

1 个答案:

答案 0 :(得分: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将在此范围结束后立即为您关闭文件。