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

Python利用hashlib實(shí)現(xiàn)文件MD5碼的批量存儲(chǔ)

 更新時(shí)間:2023年05月06日 09:57:19   作者:winfredzhang  
這篇文章主要為大家詳細(xì)介紹了如何用Python和hashlib實(shí)現(xiàn)文件MD5碼的批量存儲(chǔ)功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下

簡介

可以考慮以下幾個(gè)可能的應(yīng)用:

  • 如果你需要對文件進(jìn)行校驗(yàn)或驗(yàn)證,你可以使用MD5碼來檢查文件是否被篡改或損壞。
  • 如果你需要對文件進(jìn)行分類或去重,你可以使用MD5碼來標(biāo)識文件的唯一性或相似性。
  • 如果你需要對文件進(jìn)行存儲(chǔ)或傳輸,你可以使用Access數(shù)據(jù)庫來管理文件的路徑和MD5碼。

基于這些應(yīng)用,我為你舉了以下幾個(gè)具體的場景:

你是一個(gè)軟件開發(fā)者,你需要發(fā)布一個(gè)安裝包給用戶下載。為了保證安裝包的完整性和安全性,你可以使用剛剛一段代碼來生成安裝包的MD5碼,并將其存儲(chǔ)在Access數(shù)據(jù)庫中。當(dāng)用戶下載完安裝包后,他們可以通過比較自己計(jì)算的MD5碼和數(shù)據(jù)庫中的MD5碼來確認(rèn)安裝包是否正確無誤。

你是一個(gè)數(shù)據(jù)分析師,你需要處理大量的數(shù)據(jù)文件。為了避免重復(fù)或錯(cuò)誤的數(shù)據(jù)文件,你可以使用剛剛一段代碼來生成每個(gè)數(shù)據(jù)文件的MD5碼,并將其存儲(chǔ)在Access數(shù)據(jù)庫中。當(dāng)你需要查詢或分析某個(gè)數(shù)據(jù)文件時(shí),你可以通過查找數(shù)據(jù)庫中的MD5碼來快速定位到相應(yīng)的數(shù)據(jù)文件。

你是一個(gè)網(wǎng)絡(luò)管理員,你需要備份服務(wù)器上的重要文件。為了節(jié)省空間和時(shí)間,你可以使用剛剛一段代碼來生成每個(gè)重要文件的MD5碼,并將其存儲(chǔ)在Access數(shù)據(jù)庫中。當(dāng)你需要恢復(fù)某個(gè)重要文件時(shí),你可以通過比較服務(wù)器上和備份設(shè)備上的MD5碼來確定哪些文件需要更新或覆蓋。

源代碼

import os
import hashlib
import pyodbc
 
# Connect to the Access database
conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=./stocks.accdb;')
# conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=stocks.accdb;')
cursor = conn.cursor()
 
# Iterate over all files in the current folder
for file in os.listdir("."):
    # Skip subdirectories
    if os.path.isdir(file):
        continue
    # Get the full file path
    file_path = os.path.abspath(file)
    # Generate the md5 hash of the file content
    md5_hash = hashlib.md5()
    with open(file_path, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            md5_hash.update(chunk)
    md5_hex = md5_hash.hexdigest()
    # Insert the file path and md5 hash into the database table
    cursor.execute("INSERT INTO filemd (filepath, md5) VALUES (?, ?)", (file_path, md5_hex))
 
# Commit and close the connection
conn.commit()
conn.close()

源代碼說明

這段代碼的主要功能是遍歷當(dāng)前文件夾下的所有文件,計(jì)算每個(gè)文件的MD5碼,并將文件路徑和MD5碼存儲(chǔ)在Access數(shù)據(jù)庫中。具體來說,這段代碼做了以下幾件事:

  • 導(dǎo)入os、hashlib和pyodbc三個(gè)模塊,分別用于操作系統(tǒng)、哈希算法和數(shù)據(jù)庫連接。
  • 使用pyodbc.connect函數(shù)連接到Access數(shù)據(jù)庫,指定驅(qū)動(dòng)程序和數(shù)據(jù)庫文件名。
  • 創(chuàng)建一個(gè)cursor對象,用于執(zhí)行SQL語句。
  • 使用os.listdir函數(shù)獲取當(dāng)前文件夾下的所有文件名。
  • 使用一個(gè)for循環(huán)遍歷每個(gè)文件名。
  • 使用os.path.isdir函數(shù)判斷是否是子目錄,如果是則跳過。
  • 使用os.path.abspath函數(shù)獲取完整的文件路徑。
  • 創(chuàng)建一個(gè)md5_hash對象,用于生成MD5碼。
  • 使用open函數(shù)以二進(jìn)制模式打開文件,并使用一個(gè)for循環(huán)讀取每個(gè)4096字節(jié)的數(shù)據(jù)塊。
  • 使用md5_hash.update函數(shù)更新MD5碼的計(jì)算狀態(tài)。
  • 使用md5_hash.hexdigest函數(shù)獲取最終的MD5碼值(十六進(jìn)制字符串)。
  • 使用cursor.execute函數(shù)執(zhí)行SQL語句,將文件路徑和MD5碼插入到filemd表中(如果表不存在,則先創(chuàng)建)。
  • 使用conn.commit函數(shù)提交事務(wù),將數(shù)據(jù)保存到數(shù)據(jù)庫中。
  • 使用conn.close函數(shù)關(guān)閉數(shù)據(jù)庫連接。

效果如下所示

到此這篇關(guān)于Python利用hashlib實(shí)現(xiàn)文件MD5碼的批量存儲(chǔ)的文章就介紹到這了,更多相關(guān)Python hashlib存儲(chǔ)文件MD5碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python根據(jù)字典的值查詢出對應(yīng)的鍵的方法

    Python根據(jù)字典的值查詢出對應(yīng)的鍵的方法

    這篇文章主要介紹了Python根據(jù)字典的值查詢出對應(yīng)的鍵的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 六行python代碼的愛心曲線詳解

    六行python代碼的愛心曲線詳解

    這篇文章主要介紹了六行python代碼的愛心曲線詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 淺析Python語言自帶的數(shù)據(jù)結(jié)構(gòu)有哪些

    淺析Python語言自帶的數(shù)據(jù)結(jié)構(gòu)有哪些

    Python已經(jīng)廣泛的應(yīng)用于數(shù)據(jù)分析、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)等眾多科學(xué)計(jì)算領(lǐng)域,這篇文章主要介紹了Python語言自帶的數(shù)據(jù)結(jié)構(gòu)有哪些?需要的朋友可以參考下
    2019-08-08
  • Python執(zhí)行JS代碼的三種方式

    Python執(zhí)行JS代碼的三種方式

    以前的數(shù)據(jù)靠買,現(xiàn)在的數(shù)據(jù)靠爬”,越來越多的學(xué)者通過網(wǎng)絡(luò)爬蟲來獲取數(shù)據(jù),但是做爬蟲的人都知道,現(xiàn)在的很多網(wǎng)站都在和我們斗智斗勇,防護(hù)普遍越來越好,破解JS加密只是第一步,之后就是如何在我們的Python代碼中直接執(zhí)行JS,下面介紹一下幾種Python中執(zhí)行JS代碼的方法
    2024-01-01
  • Python報(bào)錯(cuò)SyntaxError:unexpected?EOF?while?parsing的解決辦法

    Python報(bào)錯(cuò)SyntaxError:unexpected?EOF?while?parsing的解決辦法

    在運(yùn)行或編寫一個(gè)程序時(shí)常會(huì)遇到錯(cuò)誤異常,這時(shí)python會(huì)給你一個(gè)錯(cuò)誤提示類名,告訴出現(xiàn)了什么樣的問題,下面這篇文章主要給大家介紹了關(guān)于Python報(bào)錯(cuò)SyntaxError:unexpected?EOF?while?parsing的解決辦法,需要的朋友可以參考下
    2022-07-07
  • Python實(shí)現(xiàn)遍歷目錄的方法【測試可用】

    Python實(shí)現(xiàn)遍歷目錄的方法【測試可用】

    這篇文章主要介紹了Python實(shí)現(xiàn)遍歷目錄的方法,涉及Python針對目錄與文件的遍歷、判斷、讀取相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • python 通過手機(jī)號識別出對應(yīng)的微信性別(實(shí)例代碼)

    python 通過手機(jī)號識別出對應(yīng)的微信性別(實(shí)例代碼)

    這篇文章主要介紹了python 通過手機(jī)號識別出對應(yīng)的微信性別,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • python搜索指定類型文件以及批量移動(dòng)文件程序詳解

    python搜索指定類型文件以及批量移動(dòng)文件程序詳解

    這篇文章主要給大家介紹了關(guān)于python搜索指定類型文件以及批量移動(dòng)文件程序的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 淺談tensorflow 中tf.concat()的使用

    淺談tensorflow 中tf.concat()的使用

    今天小編就為大家分享一篇淺談tensorflow 中tf.concat()的使用,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python實(shí)現(xiàn)GIF動(dòng)圖加載和降幀的方法詳解

    Python實(shí)現(xiàn)GIF動(dòng)圖加載和降幀的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python和Pygame實(shí)現(xiàn)GIF動(dòng)圖加載和降幀的效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02

最新評論