亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python計(jì)算Content-MD5并獲取文件的Content-MD5值方式

 更新時(shí)間:2020年04月03日 12:00:11   作者:煢夜  
這篇文章主要介紹了python計(jì)算Content-MD5并獲取文件的Content-MD5值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

1、首先計(jì)算MD5加密的二進(jìn)制數(shù)組(128位),然后再對(duì)這個(gè)二進(jìn)制數(shù)組進(jìn)行base64編碼(而不是對(duì)32位字符串編碼)。

例如,用Python計(jì)算0123456789的Content-MD5,主要代碼如下:

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

這樣就生成了 'eB5eJF1ptWaXm4bijSPyxw==' 的Content-MD5值

2、接著,實(shí)際上如何獲取文件的Content-MD5值呢,下面有兩種不同的寫(xiě)法,建議用第一種,不知道為啥實(shí)際調(diào)試的時(shí)候,用第一種可以的時(shí)候,用第二種不可以,因?yàn)槭遣煌藢?xiě)的代碼,估計(jì)調(diào)用的時(shí)候方式不一樣:

(1)、第一種寫(xiě)法

import hashlib, base64
 
def content_encoding(path: str):
  """
  文件轉(zhuǎn) 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)、第二種寫(xiě)法:

import hashlib, base64
 
def match(file_path, Bytes=1024):
  """
  先計(jì)算文件md5值,在對(duì)該md5值進(jìn)行base64編碼
  :param file_path: 文件路徑
  :param Bytes: 字節(jié)大小
  :return:
  """
  try:
    md5_1 = hashlib.md5() # 創(chuàng)建一個(gè)md5算法對(duì)象
    with open(file_path, 'rb') as f: # 打開(kāi)一個(gè)文件,必須是'rb'模式打開(kāi)
      while 1:
        data = f.read(Bytes) # 由于是一個(gè)文件,每次只讀取固定字節(jié)
        if data: # 當(dāng)讀取內(nèi)容不為空時(shí)對(duì)讀取內(nèi)容進(jìn)行update
          md5_1.update(data)
        else: # 當(dāng)整個(gè)文件讀完之后停止update
          break
    f.close()
    ret = base64.b64encode(bytes(md5_1.digest())) # 獲取這個(gè)文件的MD5值
    ret = ret.decode('ascii') # 去掉前面的b'
    return ret
  except Exception as e:
    print(e)
    return ''

補(bǔ)充知識(shí):Python之文件處理-批量修改md文檔內(nèi)容

#!/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):
    # 循環(huán)文件
    for file_name in files:
      file_name_split = file_name.split('.')
 
      try:
        if file_name_split[-1] == 'md':
          # 找到md文件并且復(fù)制一份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]]))
 
          # 打開(kāi)md文件然后進(jìn)行替換
          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) # 新文件一次性寫(xiě)入原文件內(nèi)容
            # 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計(jì)算Content-MD5并獲取文件的Content-MD5值方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 搞清楚 Python traceback的具體使用方法

    搞清楚 Python traceback的具體使用方法

    這篇文章主要介紹了搞清楚 Python traceback的具體使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • Opencv實(shí)現(xiàn)計(jì)算兩條直線或線段角度方法詳解

    Opencv實(shí)現(xiàn)計(jì)算兩條直線或線段角度方法詳解

    這篇文章主要介紹了Opencv實(shí)現(xiàn)計(jì)算兩條直線或線段角度方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-12-12
  • 詳解Python圖像處理庫(kù)Pillow常用使用方法

    詳解Python圖像處理庫(kù)Pillow常用使用方法

    PIL(Python Imaging Library)是Python一個(gè)強(qiáng)大方便的圖像處理庫(kù),只支持到Python2.7。這篇文章主要介紹了Python圖像處理庫(kù)Pillow常用使用方法,需要的朋友可以參考下
    2019-09-09
  • Python處理JSON時(shí)的值報(bào)錯(cuò)及編碼報(bào)錯(cuò)的兩則解決實(shí)錄

    Python處理JSON時(shí)的值報(bào)錯(cuò)及編碼報(bào)錯(cuò)的兩則解決實(shí)錄

    這篇文章主要介紹了Python處理JSON時(shí)的值報(bào)錯(cuò)及編碼報(bào)錯(cuò)的兩則解決實(shí)錄,在這里還是想建議一下使用Python 3.x版本,Python 3默認(rèn)的Unicode編碼能在實(shí)際使用中為我們省去不少問(wèn)題,需要的朋友可以參考下
    2016-06-06
  • Python解析JSON數(shù)據(jù)的基本方法實(shí)例代碼

    Python解析JSON數(shù)據(jù)的基本方法實(shí)例代碼

    JSON (JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,下面這篇文章主要給大家介紹了關(guān)于Python解析JSON數(shù)據(jù)的基本方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • 利用?Python?讓圖表動(dòng)起來(lái)

    利用?Python?讓圖表動(dòng)起來(lái)

    這篇文章主要給大家分享如何利用?Python?讓圖表動(dòng)起來(lái),本文圍繞Python?讓圖表動(dòng)起來(lái)的話題舉例matplotlib動(dòng)畫(huà)功能的一個(gè)例子展開(kāi)文章內(nèi)容,需要的朋友可以參考一下
    2021-10-10
  • Python操作json數(shù)據(jù)的一個(gè)簡(jiǎn)單例子

    Python操作json數(shù)據(jù)的一個(gè)簡(jiǎn)單例子

    這篇文章主要介紹了Python操作json數(shù)據(jù)的一個(gè)簡(jiǎn)單例子,需要的朋友可以參考下
    2014-04-04
  • Python實(shí)現(xiàn)識(shí)別圖片內(nèi)容的方法分析

    Python實(shí)現(xiàn)識(shí)別圖片內(nèi)容的方法分析

    這篇文章主要介紹了Python實(shí)現(xiàn)識(shí)別圖片內(nèi)容的方法,結(jié)合實(shí)例形式分析了tesseract模塊的下載、安裝配置及使用tesseract模塊進(jìn)行圖片識(shí)別的相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • 保留已有python安裝Anaconda的方法推薦

    保留已有python安裝Anaconda的方法推薦

    在安裝Anaconda之前,有的已經(jīng)安裝過(guò)一個(gè)Python版本了,但是又不想刪除這個(gè)Python版本,該怎么辦呢??這篇文章主要給大家介紹了關(guān)于保留已有python安裝Anaconda的幾種法推薦,需要的朋友可以參考下
    2023-12-12
  • Python連接mysql方法及常用參數(shù)

    Python連接mysql方法及常用參數(shù)

    這篇文章主要介紹了Python連接mysql方法及常用參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論