Python實(shí)現(xiàn)刪除重復(fù)文件的示例代碼
此程序主要是針對某個目錄下的全部文件進(jìn)行篩選,會刪除重復(fù)的文件。
原理很簡單,會計算每個文件的哈希,將哈希存入一個字典,文件名對應(yīng)哈希。
import os import hashlib def hash_file(filename): """Return the SHA-1 hash of the file content.""" h = hashlib.sha1() with open(filename, 'rb') as f: while True: chunk = f.read(4096) if not chunk: break h.update(chunk) return h.hexdigest() def remove_duplicate_files(path): """Remove duplicates files in the directory.""" files_hash = {} i=0 j=0 sum=len(os.listdir(path)) for dirpath, dirnames, filenames in os.walk(path): for filename in filenames: j=j+1 print("執(zhí)行進(jìn)度為:",100*j/sum,"%") file_path = os.path.join(dirpath, filename) file_hash = hash_file(file_path) if file_hash in files_hash: os.remove(file_path) i=i+1 # print(i) else: files_hash[file_hash] = file_path print("文件總數(shù)為:",sum) print("此處處理的重復(fù)文件數(shù)目為:",i)
在使用的時候直接調(diào)用下面那個函數(shù)即可,傳入?yún)?shù)為目錄路徑。
例如下面這樣:
remove_duplicate_files("Y:\圖片合集")
當(dāng)然,你也可以將程序打包為一個exe文件,甚至為它添加簡單的頁面,讓非計算機(jī)專業(yè)的人也能輕易使用。
補(bǔ)充
當(dāng)然除了上文的方法,還有很多方法可以實(shí)現(xiàn),下面是小編為大家整理的內(nèi)容,希望對大家有所幫助
Python刪除文件夾內(nèi)指定的重復(fù)文件
import os import re class file_clean: def __init__(self, folder, filerege): self.folder = folder self.filerege = filerege self.folder_generator = os.walk(self.folder) # 刪除所有文件夾及子文件夾下指定文件 def del_all_file(self): for folder, subfolder, file_list in self.folder_generator: for file in file_list: if self.filerege == '*': del_all_file = os.path.join(folder, file) os.remove(del_all_file) elif re.findall(self.filerege, file): del_all_file = os.path.join(folder, file) print(del_all_file) os.remove(del_all_file) # 只刪除所有文件夾下的指定文件 def del_file(self): for folder, subfolder, file_list in self.folder_generator: if os.path.dirname(folder) == os.path.dirname(self.folder): for file in file_list: if self.filerege == '*': del_file = os.path.join(folder, file) os.remove(del_file) elif re.findall(self.filerege, file): del_file = os.path.join(folder, file) print(del_file) os.remove(del_file) if __name__ == '__main__': # 選擇文件夾路徑 D盤C盤目錄需要使用雙斜杠r'D:\\', '\.wedrive' go = file_clean(r'D:\eong', '\.WeDrive') # 選擇要執(zhí)行的函數(shù)類型del_all_file刪除件夾及子文件夾下指定文件,del_file只刪除當(dāng)前選擇文件夾的指定文件 go.del_file()
python刪除本地夾里重復(fù)文件的方法
import os import hashlib import logging import sys def logger(): """ 獲取logger""" logger = logging.getLogger() if not logger.handlers: # 指定logger輸出格式 formatter = logging.Formatter('%(asctime)s %(levelname)-8s: %(message)s') # 文件日志 file_handler = logging.FileHandler("test.log") file_handler.setFormatter(formatter) # 可以通過setFormatter指定輸出格式 # 控制臺日志 console_handler = logging.StreamHandler(sys.stdout) console_handler.formatter = formatter # 也可以直接給formatter賦值 # 為logger添加的日志處理器 logger.addHandler(file_handler) logger.addHandler(console_handler) # 指定日志的最低輸出級別,默認(rèn)為WARN級別 logger.setLevel(logging.INFO) return logger def get_md5(filename): m = hashlib.md5() mfile = open(filename, "rb") m.update(mfile.read()) mfile.close() md5_value = m.hexdigest() return md5_value def get_urllist(): #替換指定的文件夾路徑即可 base = ("F:\\pythonFile\\煎蛋網(wǎng)\\無聊圖\\jpg\\") list = os.listdir(base) urlList=[] for i in list: url = base + i urlList.append(url) return urlList if __name__ == '__main__': log = logger() md5List =[] urlList =get_urllist() for a in urlList: md5 =get_md5(a) if (md5 in md5List): os.remove(a) print("重復(fù):%s"%a) log.info("重復(fù):%s"%a) else: md5List.append(md5) # print(md5List) print("一共%s張照片"%len(md5List))
到此這篇關(guān)于Python實(shí)現(xiàn)刪除重復(fù)文件的示例代碼的文章就介紹到這了,更多相關(guān)Python刪除重復(fù)文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python爬取用戶觀影數(shù)據(jù)并分析用戶與電影之間的隱藏信息!
看電影前很多人都喜歡去 『豆瓣』 看影評,所以我爬取44130條 『豆瓣』 的用戶觀影數(shù)據(jù),分析用戶之間的關(guān)系,電影之間的聯(lián)系,以及用戶和電影之間的隱藏關(guān)系,需要的朋友可以參考下2021-06-06基于python框架Scrapy爬取自己的博客內(nèi)容過程詳解
這篇文章主要介紹了基于python框架Scrapy爬取自己的博客內(nèi)容過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08Tensorflow實(shí)現(xiàn)多GPU并行方式
今天小編就為大家分享一篇Tensorflow實(shí)現(xiàn)多GPU并行方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02python判斷變量是否為int、字符串、列表、元組、字典的方法詳解
這篇文章主要介紹了python判斷變量是否為int、字符串、列表、元組、字典的方法詳解,需要的朋友可以參考下2020-02-02Python調(diào)用C# Com dll組件實(shí)戰(zhàn)教程
下面小編就為大家?guī)硪黄狿ython調(diào)用C# Com dll組件實(shí)戰(zhàn)教程。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10腳本測試postman快速導(dǎo)出python接口測試過程示例
這篇文章主要介紹了關(guān)于腳本測試postman快速導(dǎo)出python接口測試示例的過程操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09