用python計算檔案的md5值
阿新 • • 發佈:2019-02-02
在Python中內建了md5的實現,就是md5模組,因此可以很簡單的處理比較兩個檔案是否一致的問題。如以下程式碼片斷:
import os,sys,md5
f1 = open(’f:/1.txt’,’r’)
f2 = open(’f:/1.txt’,’r’)
print md5.new( f1.read() ).digest() == md5.new( f2.read() ).digest()
以上處理在處理比較大的檔案(比如幾百M的檔案)的時候會有記憶體問題。
----------------------------------------------
另外的實現方法程式碼:
import md5
import sys
def sumfile(fobj):
m = md5.new()
while True:
d = fobj.read(8096)
if not d:
break
m.update(d)
return m.hexdigest()
def md5sum(fname):
if fname == '-':
ret = sumfile(sys.stdin)
else:
try:
f = file(fname, 'rb')
except:
return 'Failed to open file'
ret = sumfile(f)
f.close()
return ret
if __name__ == '__main__':
for fname in sys.argv[1:]:
print '%32s %s' % (md5sum(fname), fname)