python-文件校验
使用hashlib的md5方法对文件进行加密,目的是为了保证文件在传输的过程中是否发生变化。
#!/usr/bin/python3 # coding:utf-8 # Auther:AlphaPanda # Description:使用hashlib模块,对文件内容进行校验。以此来判断文件传输过程中是否发生变化,或者有损坏 # Version:1 # Date:Fri Dec 6 22:15:16 EST 2019 import hashlib # 针对小文件的内容校验 def check_md5(file): with open(file,mode="rb") as fp: res = fp.read() hs = hashlib.md5() hs.update(res) return hs.hexdigest() res = check_md5("ceshi1.txt") print(res) # 针对大文件的内容校验 hs = hashlib.md5() hs.update("你好\n世界".encode()) print(hs.hexdigest()) hs = hashlib.md5() hs.update("你好".encode()) hs.update("\n世界".encode()) print(hs.hexdigest()) # 通过以上实验,证明一次加密文件的一行,依次加密完所有的文件内容和一次加密所有的文件内容,所获得的hash值一样。 # 大文件校验方法1: def check2_md5(file): hs = hashlib.md5() with open(file,mode="rb") as fp: while True: content = fp.read(3) if content: hs.update(content) else: break return hs.hexdigest() print(check2_md5("ceshi3.txt")) # 方法二: import os def check4_md5(file): # 计算文件大小 file_size = os.path.getsize(file) hs = hashlib.md5() with open(file,mode="rb") as fp: while file_size: # 一次最多读取三个字节 content = fp.read(3) hs.update(content) file_size -= len(content) return hs.hexdigest() print(check4_md5("ceshi4.txt"))
念念不忘,必有回响。