使用python递归比较文件夹

时间:2010-10-03 22:43:30

标签: python algorithm

我将在python上实现递归文件夹比较。您认为最好的算法是什么?

  1. 获取文件夹
  2. 的两个文件列表
  3. 对两个列表进行排序
  4. 使用filecmp模块比较文件
  5. 递归地重复每个文件夹
  6. 结果我只需要获取不同文件的列表(这里不需要内容差异),其中一个类似文件夹中缺少的文件列表。

    谢谢。

2 个答案:

答案 0 :(得分:2)

对目录进行递归搜索,并对每个文件存储md5或字典中的文件的校验和作为键,将路径/名称作为值。为这两个目录创建这个字典。然后,您可以从每个目录中删除对,并且结果丢失/不同的文件。

这将生成简单的O(n)算法,其中n是目录的卷。

答案 1 :(得分:1)

如果我是你,我会检查其他软件是否还没有实现此功能,例如rsyncdiff。对于我所看到的,两者都具有您需要的功能。有关它的更多信息here

如果你真的需要在Python中这样做,我会略微修改你的算法,使它看起来像这样:

  1. 使用os.walk;
  2. 将两个路径内容存储在两个单独的列表变量中
  3. 迭代第一个列表的每个值,以在第二个列表中找到相应的值;
  4. 如果找到了相应的值,请使用filecmp模块进行比较。否则,显示丢失的文件;
  5. 从第二个列表中删除值;
  6. 转到#2,直到第一个列表为空;
  7. 打印第二个列表中剩下的所有内容;