Search code examples
pythonhashmd5sha1checksum

Generating one MD5/SHA1 checksum of multiple files in Python


I have looked through several topics about calculating checksums of files in Python but none of them answered the question about one sum from multiple files. I have several files in sub directories and would like to determine if there was any change in one or more of them. Is there a way to generate one sum from multiple files?

EDIT: This is the way I do it to get a list of sums:

checksums = [(fname, hashlib.md5(open(fname, 'rb').read()).digest()) for fname in flist]

Solution

  • So I made it :) This way one hash sum is generated for a file list.

    hash_obj = hashlib.md5(open(flist[0], 'rb').read())
    for fname in flist[1:]:
        hash_obj.update(open(fname, 'rb').read())
    checksum = hash_obj.digest()
    

    Thank you PM 2Ring for your input!

    Note that md5 has been cracked so use it only for non security critical purposes.