基于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函數獲取目錄和哈希值。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79515.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79515.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79515.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

idea創建springboot項目無法創建jdk8原因及多種解決方案

idea創建springboot項目無法創建jdk8原因及多種解決方案 提示:幫幫志會陸續更新非常多的IT技術知識,希望分享的內容對您有用。本章分享的是springboot的使用。前后每一小節的內容是存在的有:學習and理解的關聯性。【幫幫志系列文章】&#x…

【C++進階十】多態深度剖析

【C進階十】多態深度剖析 1.多態的概念及條件2.虛函數的重寫3.重寫、重定義、重載區別4.C11新增的override 和final5.抽象類6.虛表指針和虛表6.1什么是虛表指針6.2指向誰調用誰,傳父類調用父類,傳子類調用子類 7.多態的原理8.單繼承的虛表狀態9.多繼承的…

面向網絡安全的開源 大模型-Foundation-Sec-8B

1. Foundation-Sec-8B 整體介紹 Foundation-Sec-8B 是一個專注于網絡安全領域的大型語言模型 (LLM),由思科的基礎人工智能團隊 (Foundation AI) 開發 。它基于 Llama 3.1-8B 架構構建,并通過在一個精心策劃和整理的網絡安全專業語料庫上進行持續預訓練而得到增強 。該模型旨在…

Python爬蟲的基礎用法

Python爬蟲的基礎用法 python爬蟲一般通過第三方庫進行完成 導入第三方庫(如import requests ) requests用于處理http協議請求的第三方庫,用python解釋器中查看是否有這個庫,沒有點擊安裝獲取網站url(url一定要解析正確&#xf…

WHAT - Tailwind CSS + Antd = MetisUI組件庫

文章目錄 Tailwind 和 Antd 組件庫MetisUI 組件庫 Tailwind 和 Antd 組件庫 在 WHAT - Tailwind 樣式方案(不寫任何自定義樣式) 中我們介紹了 Tailwind,至于 Antd 組件庫,我們應該都耳熟能詳,官網地址:htt…

Day 4:牛客周賽Round 91

好久沒寫了,問題還蠻多的。聽說這次是苯環哥哥出題 F題 小苯的因子查詢 思路 考慮求因子個數,用質因數分解;奇數因子只需要去掉質數為2的情況,用除法。 這里有個比較妙的細節是,提前處理出數字x的最小質因數&#xff0…

使用直覺理解不等式

問題是這個: 題目 探究 ∣ max ? b { q 1 ( z , b ) } ? max ? b { q 2 ( z , b ) } ∣ ≤ max ? b ∣ q 1 ( z , b ) ? q 2 ( z , b ) ∣ |\max_b\{q_1(z,b)\}-\max_b\{q_2(z,b)\}|\le\max_b|q_1(z,b)-q_2(z,b)| ∣maxb?{q1?(z,b)}?maxb?{q2?(z,b)}∣≤…

惡心的win11更新DIY 設置win11更新為100年

?打開注冊表編輯器?:按下Win R鍵,輸入regedit,然后按回車打開注冊表編輯器。?12?導航到指定路徑?:在注冊表編輯器中,依次展開HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings?新建DWORD值?&…

嵌入式驅動學習

時鐘 定義 周期型的0、1信號 時鐘信號由“心臟”時鐘源產生,通過“動脈”時鐘樹傳播到整個芯片中。 SYSCLK系統時鐘,由HSI、HSE、PLLCLK三選一。 HCLK是AHB總線時鐘, PCLK是APB總線時鐘。 使用某個外設,必須要先使能該外設時鐘系統…

Java:從入門到精通,你的編程之旅

Java,一門歷久彌新的編程語言,自誕生以來就以其跨平臺性、面向對象、穩定性和安全性等特性,在企業級應用開發領域占據著舉足輕重的地位。無論你是初學者還是經驗豐富的開發者,Java 都能為你提供強大的工具和廣闊的舞臺。 為什么選…

Linux:深入理解數據鏈路層

實際上一臺主機中,報文并沒有通過網絡層直接發送出去,而是交給了自己的下一層協議——數據鏈路層!! 一、理解數據鏈路層 網絡層交付給鏈路層之前,會先做決策再行動(會先查一下路由表,看看目標網…

Python基本語法(類和實例)

類和實例 類和對象是面向對象編程的兩個主要方面。類創建一個新類型,而對象是這個 類的實例,類使用class關鍵字創建。類的域和方法被列在一個縮進塊中,一般函數 也可以被叫作方法。 (1)類的變量:甴一個類…

2025 年如何使用 Pycharm、Vscode 進行樹莓派 Respberry Pi Pico 編程開發詳細教程(更新中)

micropython 概述 micropython 官方網站:https://www.micropython.org/ 安裝 Micropython 支持固件 樹莓派 Pico 安裝 Micropython 支持固件 下載地址:https://www.raspberrypi.com/documentation/microcontrollers/ 選擇 MicroPython 下載 RPI_PIC…

flink rocksdb狀態說明

文章目錄 1.默認情況2.flink中的狀態3.RocksDB4.對比情況5.使用6.RocksDB架構7.參考文章8.總結提示:以下主要考慮flink 狀態永久存儲 rocksdb情況,做一些簡單說明 1.默認情況 當flink使用rocksdb存儲狀態時。無論是永久存儲還是臨時存儲都可能會落盤寫文件(如果沒有配置存儲…

安裝SDL和FFmpeg

1、先記錄SDL 這玩意還是有一點講究的 具體步驟: 下載 SDL包: 鏈接:https://www.libsdl.org/release/SDL2-2.0.14.tar.gz 可以用迅雷,下載完之后, 解壓: tar -zxvf SDL2-2.0.14.tar.gz進入安裝目錄 cd …

2022年408真題及答案

2022年計算機408真題 2022年計算機408答案 2022 408真題下載鏈接 2022 408答案下載鏈接

Spring AI聊天模型API:輕松構建智能聊天交互

Spring AI聊天模型API:輕松構建智能聊天交互 前言 在當今數字化時代,智能聊天功能已成為眾多應用程序提升用戶體驗、增強交互性的關鍵要素。Spring AI的聊天模型API為開發者提供了一條便捷通道,能夠將強大的AI驅動的聊天完成功能無縫集成到…

Softmax回歸與單層感知機對比

(1) 輸出形式 Softmax回歸 輸出是一個概率分布,通過Softmax函數將線性得分轉換為概率: 其中 KK 是類別數,模型同時計算所有類別的概率。 單層感知機 輸出是二分類的硬決策(如0/1或1): 無概率解釋&#x…

【React】Hooks 解鎖外部狀態安全訂閱 useSyncExternalStore 應用與最佳實踐

一、背景 useSyncExternalStore 是 React 18 引入的一個 Hook;用于從外部存儲(例如狀態管理庫、瀏覽器 API 等)獲取狀態并在組件中同步顯示。這對于需要跟蹤外部狀態的應用非常有用。 二、場景 訂閱外部 store 例如(redux,mobx,Zustand,jo…

Dify框架面試內容整理-如何評估基于Dify開發的AI應用的效果?

評估基于 Dify 開發的 AI 應用效果,需要從 用戶體驗、技術性能 與 業務價值 三個層面綜合衡量。以下是詳細的評估框架,涵蓋三個關鍵點: 用戶反饋與滿意度