import hashlib
d = hashlib.sha1()
f = open('test.dat', 'rb')
while 1:
x = f.read(16384)
if not x: break
d.update(x)
print d.hexdigest()
f.read()で一気に読み出してハッシュアルゴリズムに渡すのでは、サイズの大きいファイルでメモリが足りなくなってしまうかもしれません。ハッシュアルゴリズムの計算はd.update(a+b)とd.update(a);d.update(b)が同じ結果になるので、f.read(n)でちまちま読んでupdateをかけます。