如何检查python文件夹中的所有文件是否具有不同的内容?

时间:2018-08-01 11:54:20

标签: python windows compare directory

我有一个很大的文件夹,里面装有很多文件(.txt个文件)。我想检查某些文件是否有相同的内容。文件名都是唯一的。

我知道如何比较两个文件,如下所示:

>>> import filecmp
>>> filecmp.cmp('file1.txt', 'file1.txt')
True
>>> filecmp.cmp('file1.txt', 'file2.txt')
False

但是我想一次比较所有文件。有人知道我该怎么做吗?

2 个答案:

答案 0 :(得分:3)

这是按MD5总和对所有.txt文件进行分类的简单方法:

import glob
import hashlib
import json
from collections import defaultdict


def md5(filename):
    hash_md5 = hashlib.md5()
    with open(filename, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()


dct = defaultdict(list)

for filename in glob.iglob('**/*.txt', recursive=True):
    dct[md5(filename)].append(filename)

因此,如果您只想检查哪些内容具有与您刚才查询的内容相同的内容,则可以这样做:

print([v for k, v in dct.items() if len(v) > 1])

答案 1 :(得分:-1)

您不需要python,只需运行:

md5sum * | sort >filelist.txt

,然后查看连续文件的MD5总和是否相同。