Python利用hashlib实现文件MD5码的批量存储

 更新时间:2023年05月06日 09:57:19   作者:winfredzhang  
这篇文章主要为大家详细介绍了如何用Python和hashlib实现文件MD5码的批量存储功能,文中的示例代码讲解详细,感兴趣的小伙伴可以学习一下

简介

可以考虑以下几个可能的应用:

  • 如果你需要对文件进行校验或验证,你可以使用MD5码来检查文件是否被篡改或损坏。
  • 如果你需要对文件进行分类或去重,你可以使用MD5码来标识文件的唯一性或相似性。
  • 如果你需要对文件进行存储或传输,你可以使用Access数据库来管理文件的路径和MD5码。

基于这些应用,我为你举了以下几个具体的场景:

你是一个软件开发者,你需要发布一个安装包给用户下载。为了保证安装包的完整性和安全性,你可以使用刚刚一段代码来生成安装包的MD5码,并将其存储在Access数据库中。当用户下载完安装包后,他们可以通过比较自己计算的MD5码和数据库中的MD5码来确认安装包是否正确无误。

你是一个数据分析师,你需要处理大量的数据文件。为了避免重复或错误的数据文件,你可以使用刚刚一段代码来生成每个数据文件的MD5码,并将其存储在Access数据库中。当你需要查询或分析某个数据文件时,你可以通过查找数据库中的MD5码来快速定位到相应的数据文件。

你是一个网络管理员,你需要备份服务器上的重要文件。为了节省空间和时间,你可以使用刚刚一段代码来生成每个重要文件的MD5码,并将其存储在Access数据库中。当你需要恢复某个重要文件时,你可以通过比较服务器上和备份设备上的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()

源代码说明

这段代码的主要功能是遍历当前文件夹下的所有文件,计算每个文件的MD5码,并将文件路径和MD5码存储在Access数据库中。具体来说,这段代码做了以下几件事:

  • 导入os、hashlib和pyodbc三个模块,分别用于操作系统、哈希算法和数据库连接。
  • 使用pyodbc.connect函数连接到Access数据库,指定驱动程序和数据库文件名。
  • 创建一个cursor对象,用于执行SQL语句。
  • 使用os.listdir函数获取当前文件夹下的所有文件名。
  • 使用一个for循环遍历每个文件名。
  • 使用os.path.isdir函数判断是否是子目录,如果是则跳过。
  • 使用os.path.abspath函数获取完整的文件路径。
  • 创建一个md5_hash对象,用于生成MD5码。
  • 使用open函数以二进制模式打开文件,并使用一个for循环读取每个4096字节的数据块。
  • 使用md5_hash.update函数更新MD5码的计算状态。
  • 使用md5_hash.hexdigest函数获取最终的MD5码值(十六进制字符串)。
  • 使用cursor.execute函数执行SQL语句,将文件路径和MD5码插入到filemd表中(如果表不存在,则先创建)。
  • 使用conn.commit函数提交事务,将数据保存到数据库中。
  • 使用conn.close函数关闭数据库连接。

效果如下所示

到此这篇关于Python利用hashlib实现文件MD5码的批量存储的文章就介绍到这了,更多相关Python hashlib存储文件MD5码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python发送form-data请求及拼接form-data内容的方法

    Python发送form-data请求及拼接form-data内容的方法

    这篇文章主要介绍了Python发送form-data请求及拼接form-data内容的方法,文中采用的是requests的方式发送multipart/form-data请求,需要的朋友可以参考下
    2016-03-03
  • 详述numpy中的np.random.random()系列函数用法

    详述numpy中的np.random.random()系列函数用法

    本文主要介绍了详述numpy中的np.random.random()系列函数用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 关于python爬虫模块urllib库详解

    关于python爬虫模块urllib库详解

    这篇文章主要介绍了关于python爬虫模块urllib库详解,学习爬虫,最初的操作便是模拟浏览器向服务端发出请求,这里我们就学习使用urlib库的用法,需要的朋友可以参考下
    2023-07-07
  • python学生管理系统开发

    python学生管理系统开发

    这篇文章主要为大家详细介绍了基础版和函数版的python学生管理系统开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Python连接MySQL并使用fetchall()方法过滤特殊字符

    Python连接MySQL并使用fetchall()方法过滤特殊字符

    这篇文章主要介绍了Python连接MySQL的方法并讲解了如何使用fetchall()方法过滤特殊字符,示例环境为Ubuntu操作系统,需要的朋友可以参考下
    2016-03-03
  • Pytorch 数据加载与数据预处理方式

    Pytorch 数据加载与数据预处理方式

    今天小编就为大家分享一篇Pytorch 数据加载与数据预处理方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Yolov5多边形标签和JSON数据格式转换

    Yolov5多边形标签和JSON数据格式转换

    通过labelme对图进行标注后,得到的是json文件,而Yolov5对数据进行模型构建的时候,读取需要的是txt格式的文件。所以需要先通过Python进行文件格式的转换,需要的朋友可以参考下
    2023-05-05
  • python csv一些基本操作总结

    python csv一些基本操作总结

    今天给大家带来的是关于Python的相关知识,文章围绕着python csv的一些基本操作展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • 在Python中使用正则表达式的方法

    在Python中使用正则表达式的方法

    这篇文章主要介绍了在Python中使用正则表达式的方法,讲到了专门对正则表达式提供支持的扩展库re,需要的朋友可以参考下
    2015-08-08
  • Flask框架中密码的加盐哈希加密和验证功能的用法详解

    Flask框架中密码的加盐哈希加密和验证功能的用法详解

    加盐加密就是在加密时混入一段随机字符串,这段字符串便被称为"盐值",这里我们来看一下Python的Flask框架中密码的加盐哈希加密和验证功能的用法详解:
    2016-06-06

最新评论