我正在编写一个包含大量天气观测的脚本。对于列表中的每个天气观测,代码打开该时间的天气雷达文件。然后它拉出一些数据并移动到下一行/观察。
为了安全使用内存,我想在移动到下一行时关闭天气雷达文件。这是我所做的简化版本:
synop = open(filename).read().splitlines()
synop.close()
第一行很好,我可以稍后使用synop做的事情就好了。尝试关闭synop会导致问题,因为它是type = list
。
是否有其他方法可以关闭我正在访问的文件?或者python是否在第一行代码后自动关闭文件?
我将在约。 4.5米文件,所以我需要良好的内存管理!
答案 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将在此范围结束后立即为您关闭文件。