2017-01-02 81 views
0

我有一個線程每隔一段時間寫一行到文件末尾,我希望能夠從文件的開頭讀取另一個線程然後刪除它讀取的內容。我需要它在一個文件中,這樣當程序結束時,它可以拾取它離開的位置。問題是我不知道如何刪除第一行然後刷新文件。Python一個線程寫入文件結尾,另一個線程從文件開始讀取

+0

請添加一些你已經嘗試過的代碼 –

回答

1

文件不這樣工作。您可以讀取文件或寫入文件,但無法輕鬆刪除文件中的第一行。你必須去文件的開頭,用第二行和更多行的數據覆蓋它,然後在最後截斷它。

更好的選擇是保留模塊中的行列表。 在該模塊中,定義兩個函數;

  • 一個將行添加到列表的末尾(使用append方法)。
  • 第二個從列表開始處移除行並返回它們(使用pop方法,0作爲參數)。

您應該添加第三個函數來將列表寫入文件(使用文件的writelines方法)。如果需要,您可以在其他兩個函數中調用此函數,以便在列表發生更改時將列表寫入文件。 最後但並非最不重要,你應該有一個函數來加載文件中的行列表。

由於您想從多線程程序中使用此模塊,因此此模塊應使用threading.Lock以確保一次只有一個線程可以修改列表。

相關問題