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

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

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

1、首先計(jì)算MD5加密的二進(jìn)制數(shù)組(128位),然后再對這個二進(jìn)制數(shù)組進(jìn)行base64編碼(而不是對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)試的時候,用第一種可以的時候,用第二種不可以,因?yàn)槭遣煌藢懙拇a,估計(jì)調(diào)用的時候方式不一樣:

(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值,在對該md5值進(jìn)行base64編碼
  :param file_path: 文件路徑
  :param Bytes: 字節(jié)大小
  :return:
  """
  try:
    md5_1 = hashlib.md5() # 創(chuàng)建一個md5算法對象
    with open(file_path, 'rb') as f: # 打開一個文件,必須是'rb'模式打開
      while 1:
        data = f.read(Bytes) # 由于是一個文件,每次只讀取固定字節(jié)
        if data: # 當(dāng)讀取內(nèi)容不為空時對讀取內(nèi)容進(jìn)行update
          md5_1.update(data)
        else: # 當(dāng)整個文件讀完之后停止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 ''

補(bǔ)充知識: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]]))
 
          # 打開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值方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

    這篇文章主要為大家詳細(xì)介紹了python如何生成各種隨機(jī)分布圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    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)猜拳小游戲,以文本文件存儲與調(diào)用信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 七個非常實(shí)用的Python工具包總結(jié)

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

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

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

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

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

    這篇文章主要為大家詳細(xì)介紹了Python如何利用xlwings庫操作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生成特殊矩陣詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們可以參考一下
    2023-04-04
  • 詳解Python中的內(nèi)建函數(shù),可迭代對象,迭代器

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

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

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

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

最新評論

伊宁县| 紫阳县| 丹寨县| 鹿邑县| 玉山县| 龙川县| 余江县| 故城县| 镇安县| 镶黄旗| 罗平县| 高平市| 临清市| 福贡县| 临泉县| 滦平县| 富平县| 搜索| 名山县| 康平县| 广元市| 黄陵县| 西城区| 东乌| 舞钢市| 始兴县| 利津县| 满城县| 吴忠市| 台北县| 南岸区| 衡阳市| 佳木斯市| 兴业县| 鄱阳县| 石楼县| 全州县| 镶黄旗| 绥阳县| 娄烦县| 浦县|