python确保文件一致性

时间:2014-02-16 21:43:14

标签: python linux python-2.7 file-io

我有一个在无限循环中运行的Python 2.7.x进程,它监视Ubuntu服务器中的文件夹。

每当找到文件时,它会根据已经处理过的一组已知文件检查文件,并采取相应的行动。在伪代码中:

found = set()
while True:
   for file in all_files("<DIR>"):
      if file not in found:
         process_file(file, found)

如何确保文件尚未开始复制?我不想说,拿MD5的文件总和或用另一个进程打开它,直到我确定它已经全部准备好了。

2 个答案:

答案 0 :(得分:2)

由于锁定和其他系统级操作,在完成复制之前,您将无法对文件执行任何操作。

文件不能同时进行两次操作。

答案 1 :(得分:2)

最安全的解决方案是通过inotify库使用Linux内核的pyinotify API。根据您的需要尝试IN_CREATEIN_MOVED_TO事件。另请注意this blog post警告pyinotify库的一些实现问题。