在循环处理后删除文本文件中的行
Remove lines in a text file after processing them in a loop
我有一个简单的程序可以处理文本文件中的一些行(向它们添加一些文本)。但随后它将它们保存到另一个文件中。我想知道您是否可以在循环中处理该行后删除该行。这是我的程序如何工作的示例:
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
。它处理文件句柄异常并使您的程序更健壮
我有一个简单的程序可以处理文本文件中的一些行(向它们添加一些文本)。但随后它将它们保存到另一个文件中。我想知道您是否可以在循环中处理该行后删除该行。这是我的程序如何工作的示例:
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
。它处理文件句柄异常并使您的程序更健壮