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

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值呢,下面有兩種不同的寫法,建議用第一種,不知道為啥實(shí)際調(diào)試的時(shí)候,用第一種可以的時(shí)候,用第二種不可以,因?yàn)槭遣煌藢懙拇a,估計(jì)調(diào)用的時(shí)候方式不一樣:

(1)、第一種寫法

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)、第二種寫法:

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) # 新文件一次性寫入原文件內(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如何生成各種隨機(jī)分布圖

    python如何生成各種隨機(jī)分布圖

    這篇文章主要為大家詳細(xì)介紹了python如何生成各種隨機(jī)分布圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Python 使用pandas實(shí)現(xiàn)查詢和統(tǒng)計(jì)示例詳解

    Python 使用pandas實(shí)現(xiàn)查詢和統(tǒng)計(jì)示例詳解

    這篇文章主要為大家介紹了Python 使用pandas實(shí)現(xiàn)查詢和統(tǒng)計(jì)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • python代碼實(shí)現(xiàn)猜拳小游戲

    python代碼實(shí)現(xiàn)猜拳小游戲

    這篇文章主要為大家詳細(xì)介紹了python代碼實(shí)現(xiàn)猜拳小游戲,以文本文件存儲(chǔ)與調(diào)用信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 七個(gè)非常實(shí)用的Python工具包總結(jié)

    七個(gè)非常實(shí)用的Python工具包總結(jié)

    Python 擁有海量的包,無(wú)論是普通任務(wù)還是復(fù)雜任務(wù),我們經(jīng)常在應(yīng)用程序中使用大量的工具包.本文我將討論一些常被低估的數(shù)據(jù)科學(xué)包,包括:數(shù)據(jù)清理、應(yīng)用程序開(kāi)發(fā)和調(diào)試方面,需要的朋友可以參考下
    2021-06-06
  • 利用Python抓取網(wǎng)頁(yè)數(shù)據(jù)的多種方式與示例詳解

    利用Python抓取網(wǎng)頁(yè)數(shù)據(jù)的多種方式與示例詳解

    在數(shù)據(jù)科學(xué)和網(wǎng)絡(luò)爬蟲(chóng)領(lǐng)域,網(wǎng)頁(yè)數(shù)據(jù)抓取是非常重要的一項(xiàng)技能,Python 是進(jìn)行網(wǎng)頁(yè)抓取的流行語(yǔ)言,因?yàn)樗鼡碛袕?qiáng)大的第三方庫(kù),能夠簡(jiǎn)化網(wǎng)頁(yè)解析和數(shù)據(jù)提取的過(guò)程,本篇文章將介紹幾種常見(jiàn)的網(wǎng)頁(yè)數(shù)據(jù)抓取方法,需要的朋友可以參考下
    2025-04-04
  • Python利用xlwings實(shí)現(xiàn)考勤表制作

    Python利用xlwings實(shí)現(xiàn)考勤表制作

    這篇文章主要為大家詳細(xì)介紹了Python如何利用xlwings庫(kù)操作excel實(shí)現(xiàn)考勤表的制作,文中的實(shí)現(xiàn)步驟講解詳細(xì),感興趣的可以嘗試一下
    2023-04-04
  • haskell實(shí)現(xiàn)多線程服務(wù)器實(shí)例代碼

    haskell實(shí)現(xiàn)多線程服務(wù)器實(shí)例代碼

    這篇文章主要介紹了haskell實(shí)現(xiàn)的多線程服務(wù)器,大家參考使用吧
    2013-11-11
  • Python用scipy生成特殊矩陣

    Python用scipy生成特殊矩陣

    本文主要介紹了Pytho用scipy生成特殊矩陣詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們可以參考一下
    2023-04-04
  • 詳解Python中的內(nèi)建函數(shù),可迭代對(duì)象,迭代器

    詳解Python中的內(nèi)建函數(shù),可迭代對(duì)象,迭代器

    這篇文章主要介紹了Python內(nèi)建函數(shù),可迭代對(duì)象,迭代器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • YOLOv5車牌識(shí)別實(shí)戰(zhàn)教程(一)引言與準(zhǔn)備工作

    YOLOv5車牌識(shí)別實(shí)戰(zhàn)教程(一)引言與準(zhǔn)備工作

    這篇文章主要介紹了YOLOv5車牌識(shí)別實(shí)戰(zhàn)教程(一)引言與準(zhǔn)備工作,在這個(gè)教程中,我們將一步步教你如何使用YOLOv5進(jìn)行車牌識(shí)別,幫助你快速掌握YOLOv5車牌識(shí)別技能,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

凤冈县| 泸溪县| 永仁县| 宜昌市| 梓潼县| 繁峙县| 商河县| 大港区| 太康县| 平顺县| 瑞金市| 修文县| 浦北县| 静海县| 康保县| 依兰县| 安国市| 行唐县| 庆云县| 庄浪县| 广宁县| 南漳县| 文成县| 莎车县| 鲜城| 绿春县| 梓潼县| 嘉定区| 都兰县| 镇原县| 五河县| 霍林郭勒市| 马边| 昌图县| 平昌县| 正定县| 尉氏县| 游戏| 大邑县| 临猗县| 余姚市|