python计算Content-MD5并获取文件的Content-MD5值方式

 更新时间:2020年04月03日 12:00:11   作者:茕夜  
这篇文章主要介绍了python计算Content-MD5并获取文件的Content-MD5值方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1、首先计算MD5加密的二进制数组(128位),然后再对这个二进制数组进行base64编码(而不是对32位字符串编码)。

例如,用Python计算0123456789的Content-MD5,主要代码如下:

import base64, hashlib
hash = hashlib.md5()
hash.update("0123456789")
base64.b64encode(hash.digest())

这样就生成了 'eB5eJF1ptWaXm4bijSPyxw==' 的Content-MD5值

2、接着,实际上如何获取文件的Content-MD5值呢,下面有两种不同的写法,建议用第一种,不知道为啥实际调试的时候,用第一种可以的时候,用第二种不可以,因为是不同人写的代码,估计调用的时候方式不一样:

(1)、第一种写法

import hashlib, base64
 
def content_encoding(path: str):
  """
  文件转 bytes 加密并使用 base64 编码
  :param path: 文件路径
  :return: 返回加密编码后的字符串
  """
  with open(path, 'rb') as f:
    content = f.read()
  content_md5 = hashlib.md5()
  content_md5.update(content)
  content_base64 = base64.b64encode(content_md5.digest())
  return content_base64.decode("utf-8")

(2)、第二种写法:

import hashlib, base64
 
def match(file_path, Bytes=1024):
  """
  先计算文件md5值,在对该md5值进行base64编码
  :param file_path: 文件路径
  :param Bytes: 字节大小
  :return:
  """
  try:
    md5_1 = hashlib.md5() # 创建一个md5算法对象
    with open(file_path, 'rb') as f: # 打开一个文件,必须是'rb'模式打开
      while 1:
        data = f.read(Bytes) # 由于是一个文件,每次只读取固定字节
        if data: # 当读取内容不为空时对读取内容进行update
          md5_1.update(data)
        else: # 当整个文件读完之后停止update
          break
    f.close()
    ret = base64.b64encode(bytes(md5_1.digest())) # 获取这个文件的MD5值
    ret = ret.decode('ascii') # 去掉前面的b'
    return ret
  except Exception as e:
    print(e)
    return ''

补充知识:Python之文件处理-批量修改md文档内容

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
import re
import time
 
def modify_md_content(top):
  for root, dirs, files in os.walk(top, topdown=False):
    # 循环文件
    for file_name in files:
      file_name_split = file_name.split('.')
 
      try:
        if file_name_split[-1] == 'md':
          # 找到md文件并且复制一份md文件路径
          md_file_path = os.path.join(root, '.'.join(file_name_split))
          copy_md_file_path = os.path.join(root, '.'.join([f'{file_name_split[0]}_copy', file_name_split[1]]))
 
          # 打开md文件然后进行替换
          with open(md_file_path, 'r', encoding='utf8') as fr, \
              open(copy_md_file_path, 'w', encoding='utf8') as fw:
            data = fr.read()
            # data = re.sub('\(/配图/', '(配图/', data)
            # data = re.sub('<br>', '<br>\n', data)
            # data = re.sub('<br>', '', data)
            data = re.sub('^ #.*? ', '', data)
 
            fw.write(data) # 新文件一次性写入原文件内容
            # fw.flush()
 
          # 删除原文件
          os.remove(md_file_path)
          # 重命名新文件名为原文件名
          os.rename(copy_md_file_path, md_file_path)
          print(f'{md_file_path} done...')
          time.sleep(0.5)
      except FileNotFoundError as e:
        print(e)
    time.sleep(0.5)
 
 
if __name__ == '__main__':
  top = r'/Users/mac/Desktop/'
  modify_md_content(top)

以上这篇python计算Content-MD5并获取文件的Content-MD5值方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python如何生成各种随机分布图

    python如何生成各种随机分布图

    这篇文章主要为大家详细介绍了python如何生成各种随机分布图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Python 使用pandas实现查询和统计示例详解

    Python 使用pandas实现查询和统计示例详解

    这篇文章主要为大家介绍了Python 使用pandas实现查询和统计示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • python代码实现猜拳小游戏

    python代码实现猜拳小游戏

    这篇文章主要为大家详细介绍了python代码实现猜拳小游戏,以文本文件存储与调用信息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • 七个非常实用的Python工具包总结

    七个非常实用的Python工具包总结

    Python 拥有海量的包,无论是普通任务还是复杂任务,我们经常在应用程序中使用大量的工具包.本文我将讨论一些常被低估的数据科学包,包括:数据清理、应用程序开发和调试方面,需要的朋友可以参考下
    2021-06-06
  • 利用Python抓取网页数据的多种方式与示例详解

    利用Python抓取网页数据的多种方式与示例详解

    在数据科学和网络爬虫领域,网页数据抓取是非常重要的一项技能,Python 是进行网页抓取的流行语言,因为它拥有强大的第三方库,能够简化网页解析和数据提取的过程,本篇文章将介绍几种常见的网页数据抓取方法,需要的朋友可以参考下
    2025-04-04
  • Python利用xlwings实现考勤表制作

    Python利用xlwings实现考勤表制作

    这篇文章主要为大家详细介绍了Python如何利用xlwings库操作excel实现考勤表的制作,文中的实现步骤讲解详细,感兴趣的可以尝试一下
    2023-04-04
  • haskell实现多线程服务器实例代码

    haskell实现多线程服务器实例代码

    这篇文章主要介绍了haskell实现的多线程服务器,大家参考使用吧
    2013-11-11
  • Python用scipy生成特殊矩阵

    Python用scipy生成特殊矩阵

    本文主要介绍了Pytho用scipy生成特殊矩阵详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们可以参考一下
    2023-04-04
  • 详解Python中的内建函数,可迭代对象,迭代器

    详解Python中的内建函数,可迭代对象,迭代器

    这篇文章主要介绍了Python内建函数,可迭代对象,迭代器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • YOLOv5车牌识别实战教程(一)引言与准备工作

    YOLOv5车牌识别实战教程(一)引言与准备工作

    这篇文章主要介绍了YOLOv5车牌识别实战教程(一)引言与准备工作,在这个教程中,我们将一步步教你如何使用YOLOv5进行车牌识别,帮助你快速掌握YOLOv5车牌识别技能,需要的朋友可以参考下
    2023-04-04

最新评论