2013-05-16 52 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如何工作的小副本。

相关问题