我有一个线程经常在文件的末尾写一行,我希望从文件的开头读取另一个线程,然后删除它读取的内容。我需要它在一个文件中,这样当程序结束时它可以从它停止的地方继续。问题是我不知道如何删除第一行然后刷新文件。
答案 0 :(得分:1)
文件无法正常工作。您可以读取文件或编写文件,但不能轻易删除文件中的第一行。您必须转到文件的开头并使用来自第二行和更多行的数据覆盖它,然后在结尾处截断它。
更好的选择是在模块中保留行列表。 在该模块中,定义两个函数;
append
方法)。pop
方法,以0作为参数)。您应该添加第三个函数将列表写入文件(使用文件的writelines
方法)。如果需要,您可以在其他两个函数中调用此函数,以便在更改时将列表写入文件。
最后但并非最不重要的是,你应该有一个函数来加载文件中的行列表。
由于您希望在多线程程序中使用它,因此该模块应使用threading.Lock
来确保一次只有一个线程可以修改列表。