识别未更改目录的有效方法

时间:2016-11-12 16:22:35

标签: python python-3.5 checksum directory-structure os.walk

有没有办法有效地避免os.walk进入目录树的一个分支,该分支自上一次os.walk以来没有被更改过?

我正在使用自定义Python应用程序扫描文件系统的内容,并存储从内容生成的技术数据并将其存储在数据库中。文件系统很大,扫描过程目前需要4个多小时,所以我正在寻找一种方法来动态识别文件系统的哪些分支/目录不需要重新扫描(因为没有变化和数据已存在)。

我一直在研究在数据库中存储目录校验和,并在实际处理任何目录之前,运行当前校验和以查看是否有任何子文件夹已经看到更改。但是,运行当前校验和需要很长时间 - 可能与当前“扫描一切”方法一样多。

我见过像Watchdog这样的软件包基本上来回运行连续扫描,但是由于这个文件系统太大,实际上需要很长时间(也可能是10个小时以上)看到数据库已更新。

1 个答案:

答案 0 :(得分:0)

我能够使用" os.path.getmtime(dirpath)"添加目录扫描状态的记录。通过在扫描目录之前拉出此记录,我可以检查它是否已被扫描,以及是否已扫描该目录是否已完成目录。现在只扫描新目录或修改目录中的文件。