將大文件分塊讀取到內存中,每次讀取的內容通過update()更新校驗值,最終獲得完整文件的md5校驗值
1 #!python3 2 #coding:utf-8 3 4 ''' 5 This module is coded by Yuning Ju 6 7 Copyright 2018 Yuning Ju 8 9 實現:大文件的MD5校驗 10 11 ''' 12 import hashlib,time 13 14 15 def md5_check(fh): 16 ''' 17 Calculate the md5 of files 18 將文件分塊讀入內存,防止內存溢出 19 20 ''' 21 22 fp.seek(0) 23 fr = fp.read(8096) 24 while fr: 25 yield fr 26 fr = fp.read(8096) 27 else: 28 fp.seek(0) 29 30 31 if __name__ == '__main__': 32 start = time.clock() 33 filename = input('請輸入文件路徑:') 34 m = hashlib.md5() 35 with open(filename,'rb') as fp: 36 for fr in md5_check(fp): 37 m.update(fr) #逐次更新校驗值 38 end = time.clock() 39 print(m.hexdigest(),'\n用時: %.3f s' %(end-start))