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

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)用:

  • 如果你需要對(duì)文件進(jìn)行校驗(yàn)或驗(yàn)證,你可以使用MD5碼來檢查文件是否被篡改或損壞。
  • 如果你需要對(duì)文件進(jìn)行分類或去重,你可以使用MD5碼來標(biāo)識(shí)文件的唯一性或相似性。
  • 如果你需要對(duì)文件進(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對(duì)象,用于執(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對(duì)象,用于生成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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何解決.cuda()加載用時(shí)很長的問題

    如何解決.cuda()加載用時(shí)很長的問題

    這篇文章主要介紹了如何解決.cuda()加載用時(shí)很長的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python GUI庫圖形界面開發(fā)之PyQt5表格控件QTableView詳細(xì)使用方法與實(shí)例

    python GUI庫圖形界面開發(fā)之PyQt5表格控件QTableView詳細(xì)使用方法與實(shí)例

    這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5表格控件QTableView詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下
    2020-03-03
  • 用Python實(shí)現(xiàn)Newton插值法

    用Python實(shí)現(xiàn)Newton插值法

    最近在做數(shù)值分析的作業(yè),作業(yè)里面的小數(shù)點(diǎn)讓計(jì)算能力本就薄弱的我雪上加霜,為了偷個(gè)小懶快速把作業(yè)完成,所以有了這篇博客。哈哈哈哈哈,讓我們一起復(fù)制copy,完成作業(yè),哈哈哈哈需要的朋友可以參考下
    2021-04-04
  • Python入門教程之運(yùn)算符重載詳解

    Python入門教程之運(yùn)算符重載詳解

    運(yùn)算符重載意味著賦予超出其預(yù)定義的操作含義的擴(kuò)展含義。例如運(yùn)算符 + 用于添加兩個(gè)整數(shù)以及連接兩個(gè)字符串和合并兩個(gè)列表。本文將通過示例帶大家詳細(xì)了解Python的運(yùn)算符重載,感興趣的可以了解一下
    2022-09-09
  • 詳談Python 窗體(tkinter)表格數(shù)據(jù)(Treeview)

    詳談Python 窗體(tkinter)表格數(shù)據(jù)(Treeview)

    今天小編就為大家分享一篇詳談Python 窗體(tkinter)表格數(shù)據(jù)(Treeview),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python用plt畫圖時(shí),cmp設(shè)置方法

    python用plt畫圖時(shí),cmp設(shè)置方法

    今天小編就為大家分享一篇python用plt畫圖時(shí),cmp設(shè)置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python Locust負(fù)載測試工具安裝配置使用詳解

    Python Locust負(fù)載測試工具安裝配置使用詳解

    本文將提供有關(guān)Python Locust的全面指南,包括安裝和配置、基本概念、性能測試、任務(wù)編寫、報(bào)告生成以及實(shí)際應(yīng)用場景,將通過豐富的示例代碼來幫助深入理解Locust的使用
    2024-01-01
  • python和C語言混合編程實(shí)例

    python和C語言混合編程實(shí)例

    這篇文章主要介紹了python和C語言混合編程實(shí)例,文中開發(fā)了一個(gè)tcp端口ping程序來介紹混合編程,需要的朋友可以參考下
    2014-06-06
  • Python如何提取chm數(shù)據(jù)

    Python如何提取chm數(shù)據(jù)

    這篇文章主要介紹了Python如何提取chm數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 如何使用python爬取知乎熱榜Top50數(shù)據(jù)

    如何使用python爬取知乎熱榜Top50數(shù)據(jù)

    主要是爬取知乎熱榜的問題及點(diǎn)贊數(shù)比較高的答案,通過requests請(qǐng)求庫進(jìn)行爬取,對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

长治市| 富源县| 乌恰县| 观塘区| 田林县| 互助| 托里县| 九台市| 利津县| 大庆市| 临泉县| 兰西县| 博客| 和田县| 陆丰市| 沐川县| 扎鲁特旗| 巴楚县| 乐昌市| 古蔺县| 常德市| 宜丰县| 余庆县| 崇明县| 忻城县| 通渭县| 克什克腾旗| 颍上县| 岳阳县| 江城| 河源市| 黑龙江省| 宁南县| 涞水县| 连平县| 柳州市| 临猗县| 平度市| 郁南县| 若羌县| 马龙县|