使用Python查找重复文件

时间:2012-03-01 05:00:44

标签: python scripting

这是一个出现在Python编码竞赛中的问题,并且想知道如何实现这一目标。

问题陈述:

您有两个目录(其中包含可能的子目录)。您的脚本应通过比较两个根目录中相同文件名的内容来找出重复文件

结果: 失败:如果至少一个相同文件名的内容不同

通过:否则

这是一个示例图

 /dir1                       /dir2
       -- file1                   -- file1 
       -- file2                   -- fileA  
       -- file3                   -- fileB   
       -- ....
       -- ...
       ---/subDir1
            --file1
            --file2

file1 of dir1 contains :- foo bar
file1  of dir2 contains :- foo 
Result - Fail

file1  of dir1 contains :- foo bar
file1  of dir2 contains :- foo bar
Result - Pass.

我尝试按文件大小使用散列,但显然不是这样:)

PS:可以使用任何脚本语言。

由于 凯利

2 个答案:

答案 0 :(得分:3)

您可以分层解决此问题。

  1. 浏览每个目录/子目录,比较文件的大小。
  2. 如果文件大小不同=>失败
  3. 计算每个文件的SHA1哈希,如果不匹配=>失败
  4. 如果SHA1哈希匹配,则逐字节比较内容 在文件中绝对确定。

答案 1 :(得分:1)

查看标准库中的filecmp module

将每个文件与另一个文件进行比较时,计算哈希值并不实用。必须读取整个文件以计算哈希值,然后再次读取以确认匹配。相比之下,直接比较可以在第一个差异中止。