求助:批量读取文件生成MD5校验值并存储的循环实现
批量生成文件MD5校验值并保存结果
以下是完整的实现代码,可批量处理指定目录下的文件,生成MD5校验值并将结果按「文件名、MD5校验值」两列格式保存:
import os import hashlib # 替换为你的目标文件目录路径 target_dir = "/指定的文件目录路径" # 替换为你要保存结果的文件路径 output_file = "md5校验结果.txt" results = [] # 遍历目标目录下的所有条目 for filename in os.listdir(target_dir): file_full_path = os.path.join(target_dir, filename) # 仅处理文件,跳过子目录 if os.path.isfile(file_full_path): # 初始化MD5哈希对象 hasher = hashlib.md5() with open(file_full_path, 'rb') as f: # 分块读取大文件,避免内存占用过高 while chunk := f.read(4096): hasher.update(chunk) # 获取最终的MD5十六进制字符串 md5_value = hasher.hexdigest() # 按「文件名\tMD5值」格式存储 results.append(f"{filename}\t{md5_value}") # 将结果写入输出文件 with open(output_file, 'w', encoding='utf-8') as f: f.write("文件名\tMD5校验值\n") # 写入表头 f.write('\n'.join(results))
关键细节说明
- 文件遍历逻辑:用
os.listdir获取目录下所有内容,通过os.path.isfile筛选出文件,避免处理子目录;如果需要只处理特定后缀的文件(如.txt),可改用glob.glob(f"{target_dir}/*.txt")来精准匹配。 - MD5生成修正:你的原有代码缺少
hashlib.md5()的对象初始化,且hasher.update()没有返回值,不能直接赋值给变量,必须通过hasher.hexdigest()获取最终的MD5字符串。另外采用分块读取文件的方式,避免大文件一次性读取导致内存溢出。 - 结果格式处理:用制表符分隔两列,既保证可读性,也方便后续导入表格工具(如Excel)进行分析。
内容的提问来源于stack exchange,提问作者Mandeep Singh
相关产品推荐
相关产品推荐

