如何编写循环批量计算SHA256_HASHES_pack1中所有文件的MD5值
修改后的代码
import hashlib # 补充原代码缺失的库导入 SHA256_HASHES_pack1 = ['md5.txt', 'md51.txt', 'SHA256-Hashes_pack2.txt'] BUF_SIZE = 65536 # 定义缓冲区大小,原代码未声明该变量 for filename in SHA256_HASHES_pack1: # 每次处理新文件时重新初始化哈希对象,避免累加计算 md5 = hashlib.md5() sha1 = hashlib.sha1() try: with open(filename, 'rb') as f: while True: data = f.read(BUF_SIZE) if not data: break md5.update(data) sha1.update(data) print(f"文件 {filename} 的哈希值:") print(f"MD5: {md5.hexdigest()}") print(f"SHA1: {sha1.hexdigest()}") print("------------------------") except FileNotFoundError: print(f"错误:文件 {filename} 不存在")
关键修改说明
- 补充了
hashlib库的导入,原代码缺少此部分会直接报错 - 定义了
BUF_SIZE变量,修复原代码未声明变量的问题 - 用
for循环遍历列表内所有文件名,替换原代码仅处理单个文件的逻辑 - 每次循环重新创建
md5和sha1对象,确保每个文件的哈希计算独立,不会累计之前文件的内容 - 添加异常处理,避免因文件不存在导致程序中断
- 使用f-string格式化输出,让结果更直观清晰
内容的提问来源于stack exchange,提问作者Abdul Manan
相关产品推荐
相关产品推荐

