Python的hashlib库获取超大文件的md5值实例探究

 更新时间:2024年01月23日 11:15:33   作者:weibin python学习与大数据分析  
这篇文章主要为大家介绍了Python的hashlib库获取超大文件的md5值实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Python hashlib获取文件md5值

不知道大家在工作中有没有涉及到超大文件的读取,在处理超大文件时,如果直接将整个文件读到内存,然后再计算MD5值可能会占用大量内存,严重的情况下可能会导致系统故障。

为了减轻系统内存压力,我们通常采取分块读取文件内容的方式来计算MD5。

Python的hashlib库,它支持将大文件分块读取并计算MD5值,从而避免一次性加载整个文件到内存中。

import hashlib
import os
def get_file_md5(file_path, block_size=2 ** 20):  # 默认块大小为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位专业版本.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操作系统文件

我自己找了一个5.42G操作系统文件来测试了下,运行过程计算机内存的使用率并没有明显增加,表现很平稳。

内存利用率变化

可能大家看到这里不能明显感受到分块读取文件和一次性将大文件读入内存的差异,我下面的函数去掉了分块读取的设置,我们再来看下内存利用率的变化

def get_file_md52(file_path):  # 这里去掉了块大小的设置
    md5_hash = hashlib.md5()
    with open(file_path, "rb") as f:
        while True:
            data = f.read()  # 这里是一次性将文件读入内存
            if not data:
                break
            md5_hash.update(data)
    return md5_hash.hexdigest()
# 使用方法
file_path_large_file = r"E:\xxxxxx\Win10_64位专业版本.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}")

通过上面的内存利用率截图,我们可以看到如果不设置分块读取,内存利用率会明显升高,在工作中这种操作会存在较大风险,所以,各位同学应该尽量避免这种操作方式。

当然了,分块读取超大文件的操作,不仅适用于计算md5值,同样可以用在其他读取文件内容的场景。希望各位同学可以灵活使用。

以上就是Python的hashlib库获取超大文件的md5值实例探究的详细内容,更多关于Python hashlib获取文件md5值的资料请关注脚本之家其它相关文章!

相关文章

  • Python __all__变量用法示例详解

    Python __all__变量用法示例详解

    这篇文章主要介绍了Python __all__变量用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • python:接口间数据传递与调用方法

    python:接口间数据传递与调用方法

    今天小编就为大家分享一篇python:接口间数据传递与调用方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 利用Python如何将数据写到CSV文件中

    利用Python如何将数据写到CSV文件中

    在数据分析中经常需要从csv格式的文件中存取数据以及将数据写书到csv文件中。下面这篇文章主要给大家介绍了关于利用Python如何将数据写到CSV文件中的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-06-06
  • 如何利用python读取micaps文件详解

    如何利用python读取micaps文件详解

    这篇文章主要给大家介绍了关于如何利用python读取micaps文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • ubuntu中配置pyqt4环境教程

    ubuntu中配置pyqt4环境教程

    本文给大家分享的是在Ubuntu系统中配置pyqt4的详细教程,有需要的小伙伴可以参考下
    2017-12-12
  • Python有关Unicode UTF-8 GBK编码问题详解

    Python有关Unicode UTF-8 GBK编码问题详解

    本文主要介绍了Python有关Unicode UTF-8 GBK编码问题详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Python获取文件所在目录和文件名的方法

    Python获取文件所在目录和文件名的方法

    下面小编就为大家带来一篇Python获取文件所在目录和文件名的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Python操作HDF5文件示例

    Python操作HDF5文件示例

    这篇文章主要为大家介绍了Python操作HDF5文件示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 浅析Python中嵌套字典的访问与操作

    浅析Python中嵌套字典的访问与操作

    在Python编程中,嵌套字典是一种常见的数据结构,它可以以层次结构的方式组织和存储数据,本文将详细介绍如何在Python中访问和操作嵌套字典,需要的可以参考下
    2024-02-02
  • python机器学习使数据更鲜活的可视化工具Pandas_Alive

    python机器学习使数据更鲜活的可视化工具Pandas_Alive

    今天我分享大家一款非常棒的动画可视化工具:Pandas_Alive,它以 matplotlib 绘图为后端,不仅可以创建出令人惊叹的动画可视化,而且使用方法非常简单。本文详情如下
    2021-11-11

最新评论