【发布时间】:2019-02-11 10:34:14
【问题描述】:
我有两个目录,其中包含一堆文件和子文件夹。 我想检查两个目录中的文件内容是否相同(忽略文件名)。子文件夹结构也应该相同。
我查看了filecmp.dircmp 但这没有帮助,因为它没有考虑文件内容; filecmp.dircmp() 没有 shallow=False 选项,请参阅 here。
this SO 答案中的解决方法也不起作用,因为它考虑了文件名。
进行比较的最佳方法是什么?
【问题讨论】:
-
所以您想将一个目录中的每个文件与另一个目录中的每个文件进行比较,以查找是否存在可能的匹配项?这似乎是一项非常漫长的任务,也许是xy。你能澄清你为什么要这样做吗?您基本上想要解决方法,但允许任意两对文件之间进行匹配。
-
是的,解决方法看起来不错,除了它考虑了文件名(以及我想的其他 os.stat 数据)这一事实。
-
你能解决我的其他问题吗?如果您有两个目录,其中有 100 个不同名称的文件,那么在最坏的情况下,您将比较文件 10000 次。这似乎太过分了,尤其是对于大文件。
-
我想这样做是因为我需要知道两个文件夹是否具有相同的结构并包含相同的文件。如果是,我有一个“重复”,可以删除两者之一。
-
如果我尝试尽快停止比较,最坏的情况不太可能发生,例如首先比较总大小,然后比较文件数量等。
标签: python-3.x file stat