import os
import hashlib
def calculate_md5(filename):
md5_hash = hashlib.md5()
with open(filename, 'rb') as file:
for chunk in iter(lambda: file.read(4096), b''):
md5_hash.update(chunk)
return md5_hash.hexdigest()
def calculate_sha256(filename):
sha256_hash = hashlib.sha256()
with open(filename, 'rb') as file:
for chunk in iter(lambda: file.read(4096), b''):
sha256_hash.update(chunk)
return sha256_hash.hexdigest()
# SHA-3是美国国家标准与技术研究院(NIST)于2015年发布的一种新的哈希算法。它提供了比SHA-256更高的安全性和更快的速度。
def calculate_sha3_256(filename):
sha3_256_hash = hashlib.sha3_256()
with open(filename, 'rb') as file:
for chunk in iter(lambda: file.read(4096), b''):
sha3_256_hash.update(chunk)
return sha3_256_hash.hexdigest()
# Blake2是一种快速且安全的哈希算法,它具有与SHA-3相当的安全性,但速度更快。
def calculate_blake2s(filename):
blake2s_hash = hashlib.blake2s()
with open(filename, 'rb') as file:
for chunk in iter(lambda: file.read(4096), b''):
blake2s_hash.update(chunk)
return blake2s_hash.hexdigest()
def calculate_blake2b(filename):
blake2b_hash = hashlib.blake2b()
with open(filename, 'rb') as file:
for chunk in iter(lambda: file.read(4096), b''):
blake2b_hash.update(chunk)
return blake2b_hash.hexdigest()
def compare_folders(folder1, folder2):
# 获取文件夹1中的所有文件路径
files1 = []
for root, dirs, files in os.walk(folder1):
for file in files:
files1.append(os.path.join(root, file))
# 获取文件夹2中的所有文件路径
files2 = []
for root, dirs, files in os.walk(folder2):
for file in files:
files2.append(os.path.join(root, file))
# 比较文件夹中的文件MD5值
for file1, file2 in zip(files1, files2):
print(f"开始对比{file1} 和 {file2} ")
md5_1 = calculate_md5(file1)
md5_2 = calculate_md5(file2)
if md5_1 != md5_2:
print(f"{file1} 和 {file2} 不相同")
return False
return True
# 示例用法
folder1 = "F:\对比文件是否相同\正常"
folder2 = "F:\对比文件是否相同\异常"
result = compare_folders(folder1, folder2)
if result:
print("两个文件夹下的所有文件相同")
else:
print("两个文件夹下的文件不相同")
最后修改:2024 年 03 月 22 日
© 允许规范转载