第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在Python中獲取大文件的MD5哈希值

在Python中獲取大文件的MD5哈希值

躍然一笑 2019-07-31 15:35:44
在Python中獲取大文件的MD5哈希值我使用了hashlib(它取代了Python 2.6 / 3.0中的md5),如果我打開一個(gè)文件并將其內(nèi)容放入hashlib.md5()函數(shù)中,它工作正常。問題在于非常大的文件,它們的大小可能超過RAM大小。如何在不將整個(gè)文件加載到內(nèi)存的情況下獲取文件的MD5哈希值?
查看完整描述

3 回答

?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊

將文件分成128個(gè)字節(jié)的塊并連續(xù)使用它們將它們送到MD5 update()。

這利用了MD5具有128字節(jié)摘要塊的事實(shí)?;旧希?dāng)MD5 digest()是文件時(shí),這正是它正在做的事情。

如果確保在每次迭代時(shí)釋放內(nèi)存(即不將整個(gè)文件讀取到內(nèi)存中),則該內(nèi)存不應(yīng)超過128個(gè)字節(jié)。

一個(gè)例子是像這樣讀取塊:

f = open(fileName)while not endOfFile:
    f.read(128)


查看完整回答
反對(duì) 回復(fù) 2019-07-31
?
慕娘9325324

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果您關(guān)心更多pythonic(沒有'while True')閱讀文件的方式,請(qǐng)檢查以下代碼:

import hashlibdef checksum_md5(filename):
    md5 = hashlib.md5()
    with open(filename,'rb') as f: 
        for chunk in iter(lambda: f.read(8192), b''): 
            md5.update(chunk)
    return md5.digest()

請(qǐng)注意,iter()func需要一個(gè)空的字節(jié)字符串,以便返回的迭代器在EOF處停止,因?yàn)閞ead()返回b''(不僅僅是'')。


查看完整回答
反對(duì) 回復(fù) 2019-07-31
  • 3 回答
  • 0 關(guān)注
  • 2189 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)