欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

Python hashlib獲取文件md5值

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

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

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

import hashlib
import os
def get_file_md5(file_path, block_size=2 ** 20):  # 默認(rèn)塊大小為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)文件

我自己找了一個(gè)5.42G操作系統(tǒng)文件來測試了下,運(yùn)行過程計(jì)算機(jī)內(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)存利用率會明顯升高,在工作中這種操作會存在較大風(fēng)險(xiǎn),所以,各位同學(xué)應(yīng)該盡量避免這種操作方式。

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

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

相關(guān)文章

  • Python?__all__變量用法示例詳解

    Python?__all__變量用法示例詳解

    這篇文章主要介紹了Python?__all__變量用法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • python:接口間數(shù)據(jù)傳遞與調(diào)用方法

    python:接口間數(shù)據(jù)傳遞與調(diào)用方法

    今天小編就為大家分享一篇python:接口間數(shù)據(jù)傳遞與調(diào)用方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 利用Python如何將數(shù)據(jù)寫到CSV文件中

    利用Python如何將數(shù)據(jù)寫到CSV文件中

    在數(shù)據(jù)分析中經(jīng)常需要從csv格式的文件中存取數(shù)據(jù)以及將數(shù)據(jù)寫書到csv文件中。下面這篇文章主要給大家介紹了關(guān)于利用Python如何將數(shù)據(jù)寫到CSV文件中的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-06-06
  • 如何利用python讀取micaps文件詳解

    如何利用python讀取micaps文件詳解

    這篇文章主要給大家介紹了關(guān)于如何利用python讀取micaps文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • ubuntu中配置pyqt4環(huán)境教程

    ubuntu中配置pyqt4環(huán)境教程

    本文給大家分享的是在Ubuntu系統(tǒng)中配置pyqt4的詳細(xì)教程,有需要的小伙伴可以參考下
    2017-12-12
  • Python有關(guān)Unicode UTF-8 GBK編碼問題詳解

    Python有關(guān)Unicode UTF-8 GBK編碼問題詳解

    本文主要介紹了Python有關(guān)Unicode UTF-8 GBK編碼問題詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Python獲取文件所在目錄和文件名的方法

    Python獲取文件所在目錄和文件名的方法

    下面小編就為大家?guī)硪黄狿ython獲取文件所在目錄和文件名的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • Python操作HDF5文件示例

    Python操作HDF5文件示例

    這篇文章主要為大家介紹了Python操作HDF5文件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 淺析Python中嵌套字典的訪問與操作

    淺析Python中嵌套字典的訪問與操作

    在Python編程中,嵌套字典是一種常見的數(shù)據(jù)結(jié)構(gòu),它可以以層次結(jié)構(gòu)的方式組織和存儲數(shù)據(jù),本文將詳細(xì)介紹如何在Python中訪問和操作嵌套字典,需要的可以參考下
    2024-02-02
  • python機(jī)器學(xué)習(xí)使數(shù)據(jù)更鮮活的可視化工具Pandas_Alive

    python機(jī)器學(xué)習(xí)使數(shù)據(jù)更鮮活的可視化工具Pandas_Alive

    今天我分享大家一款非常棒的動畫可視化工具:Pandas_Alive,它以?matplotlib?繪圖為后端,不僅可以創(chuàng)建出令人驚嘆的動畫可視化,而且使用方法非常簡單。本文詳情如下
    2021-11-11

最新評論