1. 程式人生 > >Python寫自動化之獲取檔案的MD5值

Python寫自動化之獲取檔案的MD5值

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