Python寫自動化之獲取檔案的MD5值
阿新 • • 發佈:2019-01-08
使用Python 獲取檔案的MD5 值是一件很簡單的事情,Python 提供了md5 和 hashlib 兩個模組,都可以獲取到檔案的md5值。
程式碼如下:
#獲取檔案的MD5值,適用於小檔案 def getFileMD5(self,filepath): if self.isFile(filepath): f = open(filepath,'rb') md5obj = hashlib.md5() md5obj.update(f.read()) hash = md5obj.hexdigest() f.close() return str(hash).upper() return None
上面的程式碼已經適用與獲取絕大多數檔案的md5值。
然而,仔細看程式碼,就會發現,在獲取md5值時,實際上有一個讀檔案的過程。這樣就會有一個問題,倘若檔案非常大,大於機器記憶體的時候,上面的程式碼就會有問題,解決方法是可以分多次讀取,程式碼如下:
#獲取檔案的MD5值,適用於較大的檔案 def getBigFileMD5(self,filepath): if self.isFile(filepath): md5obj = hashlib.md5() maxbuf = 8192 f = open(filepath,'rb') while True: buf = f.read(maxbuf) if not buf: break md5obj.update(buf) f.close() hash = md5obj.hexdigest() return str(hash).upper() return None
另外,需要注意的是:在python 3.2 版本中已經取消了 md5 模組,因此在獲取md5 時,建議採用 hashlib 模組。