当前位置: 首页 > news >正文

基于python的哈希查表搜索特定文件

    Python有hashlib库,支持多种哈希算法,比如MD5、SHA1、SHA256等。通常SHA256比较安全,但MD5更快,但可能存在碰撞风险,得根据自己需求决定。

        下面以SHA256做例。

import hashlib
import os
from typing import Dict, Listdef calculate_file_hash(filepath: str, algorithm='sha256') -> str:"""计算文件的哈希值"""hasher = hashlib.new(algorithm)with open(filepath, 'rb') as f:while chunk := f.read(8192):hasher.update(chunk)return hasher.hexdigest()def build_hash_table(directory: str) -> Dict[str, List[str]]:"""构建目录文件的哈希映射表"""hash_table = {}for root, _, files in os.walk(directory):for filename in files:filepath = os.path.join(root, filename)try:file_hash = calculate_file_hash(filepath)hash_table.setdefault(file_hash, []).append(filepath)except (IOError, PermissionError):continuereturn hash_table# 使用示例
if __name__ == "__main__":target_dir = input("输入要扫描的目录:")target_hash = input("输入要查找的哈希值:").strip().lower()print("正在构建哈希表...")hash_map = build_hash_table(target_dir)if matches := hash_map.get(target_hash):print(f"找到 {len(matches)} 个匹配文件:")for path in matches:print(f"• {path}")else:print("未找到匹配文件")
    优化方向可存储程序运行的值,和使用argparse来接受命令行参数,或者直接通过input函数获取目录和哈希值。

相关文章:

  • 查看Ubuntu版本
  • (41)VTK C++开发示例 ---qt使用vtk最小示例
  • 科创大赛——知识点复习【c++】——第一篇
  • Flink流水线任务在线演示
  • 《类和对象(上)》
  • Python 整理3种查看神经网络结构的方法
  • 虚幻引擎作者采访
  • 什么是原码、反码与补码?
  • 2025流感疫苗指南+卫健委诊疗方案|高危人群防护+并发症处理 慢性肾脏病饮食指南2025卫健委版|低盐低磷食谱+中医调理+PDF 网盘下载 pdf下载
  • 牛客1018逆序数-归并排序
  • 金融的本质是智融、融资的实质是融智、投资的关键是投智,颠覆传统金融学的物质资本中心论,构建了以智力资本为核心的新范式
  • PyTorch 张量与自动微分操作
  • 全球化电商平台Azure云架构设计
  • 期末代码Python
  • iptables的基本选项及概念
  • 串 Part 1
  • 数据链路层(MAC 地址)
  • Gemini 解释蓝图节点的提示词
  • STC单片机与淘晶驰串口屏通讯例程之04【密码登录与修改】
  • 有哪些场景不适合使用Java反射机制
  • 贵州黔西游船发生侧翻事故,游客:事发时能见度只有一米,所乘船只停靠礁石避险
  • 习近平给谢依特小学戍边支教西部计划志愿者服务队队员回信
  • 准80后遵义市自然资源局局长陈清松任仁怀市委副书记、代市长
  • 印尼巴厘岛多地停电,疑似海底电缆发生故障
  • 产假工资是谁出?女职工生育能领多少生育津贴?解答来了
  • 伊朗外长:伊美第四轮间接谈判将于5月3日举行