我有一个简单的程序,可以处理文本文件中的某些行(向其中添加一些文本)。但随后将它们保存到另一个文件。我想知道在循环处理完行后是否可以删除行。这是我的程序如何工作的示例:
datafile = open("data.txt", "a+")
donefile = open("done.txt", "a+")
for i in datafile:
#My program goes in here
donefile.write(processeddata)
#end of loop
datafile.close()
donefile.close()
如您所见,它仅处理文件中的某些行(由换行符分隔)。有没有一种方法可以在循环结束时删除该行,以便在程序关闭时可以从中断处继续执行?
为了让我正确地回答这个问题,您希望在处理并存储到datafile
后将其从donefile
中删除?
没有必要这样做,并且将其写入作为读取源的文件也存在很大风险。
相反,为什么退出循环后不删除donefile
? (即关闭文件后)
文件迭代器是一个惰性迭代器。因此,当您执行for i in datafile
时,它一次会将一行加载到内存中,因此您只需要处理那一行...因此,内存限制不应该成为您的关注点
最后,要访问文件,请考虑使用with statement
。它会处理文件句柄异常,并使您的程序更加健壮]