2013-05-16 87 views
0

爲了讓多個程序/用戶可以讀取/寫入同一文件,我需要做些什麼?對同一文件進行多次編輯

使用案例

我有一個CSV文件,我想使多個用戶在或多或少的實時編輯。我希望能夠編寫和讀取文件中的小改動,但我也希望能夠刷新數據,並加載到我的程序中,以防整個文件被粗心的靈魂所取代。

背景

我已經看到,如果時間戳被改變,或者文件被另一程序/用戶覆蓋某些程序會刷新一個文件。 (我在用兩種不同編輯器利用不同功能編輯文件時自己使用了這個功能)。

家庭工作

我可以想象這需要我的應用程序來複制原始文件,當它最初被打開。通過這種方式,可以對原件進行任何更新以區分副本以獲取對當前數據的修改。然後當臨時文件被更新時,主文件可以被重寫。然後每個用戶/程序可以重新加載它們自己更新的文件。這是一種明智的方式/最佳做法還是有更好的方法來結束這裏。

另外一個人可以從我的理解緩存文件。

阻擋/鎖定文件是否更好?我必須對比賽條件保持警惕嗎?

環境

我打算這樣做在Python。我也希望這是平臺獨立的,例如, Linux,Windows和Mac(昂貴的Linux)。

相關

看來這些都與hereherehere

+0

爲什麼選擇csv文件?似乎你想要一個數據庫。 –

+2

啊,我認爲一個數據庫是去這裏的方法...... – reptilicus

+2

如果一個數據庫不好,你有沒有考慮過使用預先存在的[協作實時編輯器](http://en.wikipedia.org/wiki/Collaborative_real-time_editor)或併發[版本控制](http://en.wikipedia。org/wiki/Revision_control)系統?這會比從頭開始寫點東西簡單得多。 – Aya

回答

0

如果編輯強度較低,可以使用csv文件將其拉出,但通過鎖定整個文件以避免用戶覆蓋彼此的編輯。如果在應用編輯之前文件不能被鎖定,那麼使用數據庫將會更好,其中特定的記錄將被鎖定而不是整個文件。

0

當用戶打開文件時,您實際上會爲其提供file_userid-1.csv的副本,並讓他編輯該文件以避免用戶覆蓋其工作。當用戶保存你覆蓋原來的。在你之間你保持一個鉤子,看看原來的一個修改過,而當前用戶也修改了他的。如果原始文件被修改爲diff或我不知道的東西。

我認爲你需要的是svn或git如何工作的小副本。

相關問題