最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python的hashlib庫獲取超大文件的md5值實例探究

 更新時間:2024年01月23日 11:15:33   作者:weibin python學(xué)習(xí)與大數(shù)據(jù)分析  
這篇文章主要為大家介紹了Python的hashlib庫獲取超大文件的md5值實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

Python hashlib獲取文件md5值

不知道大家在工作中有沒有涉及到超大文件的讀取,在處理超大文件時,如果直接將整個文件讀到內(nèi)存,然后再計算MD5值可能會占用大量內(nèi)存,嚴重的情況下可能會導(dǎo)致系統(tǒng)故障。

為了減輕系統(tǒng)內(nèi)存壓力,我們通常采取分塊讀取文件內(nèi)容的方式來計算MD5。

Python的hashlib庫,它支持將大文件分塊讀取并計算MD5值,從而避免一次性加載整個文件到內(nèi)存中。

import hashlib
import os
def get_file_md5(file_path, block_size=2 ** 20):  # 默認塊大小為1MB
    md5_hash = hashlib.md5()
    with open(file_path, "rb") as f:
        while True:
            data = f.read(block_size)
            if not data:
                break
            md5_hash.update(data)
    return md5_hash.hexdigest()
# 使用方法
file_path_large_file = r"E:\xxxxxxx\Win10_64位專業(yè)版本.ISO"
md5_value = get_file_md5(file_path_large_file)
print(f"大文件的大小是:{os.path.getsize(file_path_large_file)/1024/1024/1024:.2f}GB")
print(f"大文件的MD5值是:{md5_value}") 

測試5.42G操作系統(tǒng)文件

我自己找了一個5.42G操作系統(tǒng)文件來測試了下,運行過程計算機內(nèi)存的使用率并沒有明顯增加,表現(xiàn)很平穩(wěn)。

內(nèi)存利用率變化

可能大家看到這里不能明顯感受到分塊讀取文件和一次性將大文件讀入內(nèi)存的差異,我下面的函數(shù)去掉了分塊讀取的設(shè)置,我們再來看下內(nèi)存利用率的變化

def get_file_md52(file_path):  # 這里去掉了塊大小的設(shè)置
    md5_hash = hashlib.md5()
    with open(file_path, "rb") as f:
        while True:
            data = f.read()  # 這里是一次性將文件讀入內(nèi)存
            if not data:
                break
            md5_hash.update(data)
    return md5_hash.hexdigest()
# 使用方法
file_path_large_file = r"E:\xxxxxx\Win10_64位專業(yè)版本.ISO"
md5_value = get_file_md52(file_path_large_file)
print(f"大文件的大小是:{os.path.getsize(file_path_large_file)/1024/1024/1024:.2f}GB")
print(f"大文件的MD5值是:{md5_value}")

通過上面的內(nèi)存利用率截圖,我們可以看到如果不設(shè)置分塊讀取,內(nèi)存利用率會明顯升高,在工作中這種操作會存在較大風險,所以,各位同學(xué)應(yīng)該盡量避免這種操作方式。

當然了,分塊讀取超大文件的操作,不僅適用于計算md5值,同樣可以用在其他讀取文件內(nèi)容的場景。希望各位同學(xué)可以靈活使用。

以上就是Python的hashlib庫獲取超大文件的md5值實例探究的詳細內(nèi)容,更多關(guān)于Python hashlib獲取文件md5值的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

织金县| 南京市| 吴江市| 北京市| 县级市| 罗源县| 哈巴河县| 昔阳县| 云阳县| 东城区| 娱乐| 三门峡市| 乌苏市| 汉川市| 栾城县| 鸡东县| 临海市| 宁武县| 天峻县| 清镇市| 南澳县| 甘孜县| 革吉县| 景东| 青龙| 绥芬河市| 交城县| 吴忠市| 广丰县| 东方市| 鄱阳县| 深州市| 焉耆| 子长县| 剑河县| 双江| 西华县| 盈江县| 莱芜市| 峨边| 额尔古纳市|