使用Python 獲取文件的MD5

ybw8 9年前發布 | 5K 次閱讀 Python

使用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 模塊。

 本文由用戶 ybw8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!