我是Python新手,但我还不知道。 我在for循环中有一个基本程序,它从站点请求数据并将其保存到文本文件中 但当我在我的任务管理器内部检查时,我发现内存使用量只会增加?在长时间运行时,这对我来说可能是一个问题。 Python的标准是这样做还是可以更改它? 这是程序基本上是什么
savefile = open("file.txt", "r+")
for i in savefile:
#My code goes here
savefile.write(i)
#end of loop
savefile.close()
答案 0 :(得分:4)
在您调用.close()
或.flush()
或直到达到指定的缓冲区大小之前,Python不会写入文件。这个问题可能会对您有所帮助:How often does python flush to a file?
答案 1 :(得分:3)
正如@Almog所说,Python不会立即写入文件。因此,您写入文件的每一行都会存储到RAM中,直到您使用savefile.close()
,它会刷新内部缓冲区并将所有内容写入文件。这可以解释额外的内存使用情况。
尝试将循环更改为:
savefile = open('file.txt', 'r+')
for i in savefile:
savefile.write(i)
savefile.flush() #flushes buffer, saving RAM
savefile.close()
答案 2 :(得分:0)
有一个更好的解决方案,以pythonic方式解决:
with open("your_file.txt", "write_mode") as file_variable_name:
for line in file_name:
file_name.write(line)
file_name.flush()
此代码刷新每一行的文件,执行后由于with-Statement而关闭文件