Python でディレクトリを再帰検索し、ハッシュ値を取得する

Python でディレクトリを再帰検索し、ハッシュ値を取得するサンプルコードをメモしておきます。 ハッシュ値の計算には hashlib を使い、アルゴリズムには SHA1 を利用しています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python3

import hashlib
import os


def get_dir_hash(directory: str):
    if not os.path.exists(directory):
        return -1
    hash = hashlib.sha1()
    for root, dirs, files in os.walk(directory):
        for file in files:
            with open(os.path.join(root, file), "rb") as f:
                while True:
                    buf = f.read(hash.block_size * 0x800)
                    if not buf:
                        break
                    hash.update(buf)
    return hash.hexdigest()