Python一个线程写入文件末尾,另一个线程从文件开头读取

时间:2017-01-02 18:35:33

标签: python multithreading file-io

我有一个线程经常在文件的末尾写一行,我希望从文件的开头读取另一个线程,然后删除它读取的内容。我需要它在一个文件中,这样当程序结束时它可以从它停止的地方继续。问题是我不知道如何删除第一行然后刷新文件。

1 个答案:

答案 0 :(得分:1)

文件无法正常工作。您可以读取文件或编写文件,但不能轻易删除文件中的第一行。您必须转到文件的开头并使用来自第二行和更多行的数据覆盖它,然后在结尾处截断它。

更好的选择是在模块中保留行列表。 在该模块中,定义两个函数;

  • 一个用于在列表末尾添加行(使用append方法)。
  • 第二个从列表开头删除行并返回它们(使用pop方法,以0作为参数)。

您应该添加第三个函数将列表写入文件(使用文件的writelines方法)。如果需要,您可以在其他两个函数中调用此函数,以便在更改时将列表写入文件。 最后但并非最不重要的是,你应该有一个函数来加载文件中的行列表。

由于您希望在多线程程序中使用它,因此该模块应使用threading.Lock来确保一次只有一个线程可以修改列表。