我目前需要在增量数据迁移发生后比较目录。我编写了一个 python 脚本来遍历源/目标列表,执行从源到目标的增量复制,然后立即比较每个目录中的文件和文件夹的数量。为了进行这种比较,我们非常简单地使用:
对于 os.walk(destd) 中的(路径、目录、文件):
destFileCount += len(文件)
destDirCount += len(dirs)
如果返回的文件/目录的数量不同,我们调用另一段代码来查看到底有什么不同。为此,我们运行以下命令并将输出发送到文件:
filecmp.dircmp(来源,destd).report_full_closure()
我们使用 report_full_closure 部分,因为我不知道进行递归比较的另一种方法。然后脚本在结果文件中搜索以“only in”开头的行并将它们打印到屏幕上,有效地向我们展示了差异。
无论多么低效,这对于包含大约 90,000 个文件的目录来说就像一个魅力,但是一旦我们达到这个上限,脚本就会变得迟钝,以至于无法将其用于此目的。我想我的问题可以分为以下几点:
我在使用这两个模块 [os.walk + filecmp.dircmp().report_full_closure()] 时是否犯了逻辑错误?即,我真的可以跳过 filecmp 节省时间,还是应该只执行 filecmp 并完全跳过文件/目录计数?
有没有办法通过“缓存”一个文件以在另一个中使用来组合这两个功能?
有没有更快的方法来执行这些功能中的任何一个?我已经搜索了高低,所以我猜没有。
我非常感谢您对此事的看法。这个脚本已经变形和增长了很多,所以如果答案非常明显,请原谅我......谢谢你,M