<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
兩層判斷:
1.先判斷檔案大小是否為相同,大小不同則不是重複檔案,予以保留;
2.檔案大小相同再判斷檔案md5,md5相同,則是重複檔案,予以刪除。
from pathlib import Path import hashlib def getmd5(filename): # 接收檔案路徑,返回檔案md5值 with open(filename, 'rb') as f: data = f.read() file_md5 = hashlib.new("md5", data).hexdigest() return file_md5 def main(): path = r"F:FileRecv刪除檔案測試" all_size = {} total_file = 0 total_delete = 0 # 獲取路徑內的所有檔名,預設是升序排列,相同檔案將會保留日期時間最新的 all_files = Path(path).glob('*.*') # 降序排列,相同檔案將會保留檔名最短的(即日期時間最久的) all_files = sorted(all_files, reverse=True) # 遍歷檔案路徑內的所有檔案 for file in all_files: # 獲取檔案所佔位元組大小,作為資料字典的鍵 size = file.stat().st_size # name_and_md5列表用於儲存檔案絕對路徑和md5值,作為資料字典的值 name_and_md5 = [file, ''] # 針對重複檔案進行處理,生成字典儲存相關資訊 # 字典all_size中key是size,value是name_and_md5列表 # 針對相同size的檔案,再呼叫getmd5函數,獲取檔案的md5值 # 檔案size不同(不在all_size.keys()中),則自動判斷為不同的檔案,予以保留 if size in all_size.keys(): # 呼叫getmd5函數,獲取檔案的md5值 new_md5 = getmd5(file) if all_size[size][1] == '': all_size[size][1] = getmd5(all_size[size][0]) # 判斷md5值存在,即檔案重複,則刪除檔案。md5值不存在,則把md5值加入列表中 if new_md5 in all_size[size]: file.unlink() total_delete += 1 else: all_size[size].append(new_md5) else: all_size[size] = name_and_md5 total_file += 1 print(f'檔案總數:{total_file}') print(f'刪除個數:{total_delete}') if __name__ == '__main__': main()
效果圖:
程式碼說明:特別感謝瑜亮老師提供的程式碼!
pathlib和os,os.path常用的函數對應關係
pathlib常用方法介紹:
Path(path).name # 返回檔名+檔案字尾
Path(path).stem # 返回檔名
Path(path).suffix # 返回檔案字尾
Path(path).suffixes # 返回檔案字尾列表
Path(path).root # 返回根目錄
Path(path).parts # 返回檔案
Path(path).anchor # 返回根目錄
Path(path).parent # 返回父級目錄
Path(path).parents # 返回所有上級目錄的列表
Path.exists() # 判斷 Path 路徑是否是一個已存在的檔案或資料夾
Path.is_dir() # 判斷 Path 是否是一個資料夾
Path.is_file() # 判斷 Path 是否是一個檔案
Path.mkdir() # 建立資料夾
Path.rmdir() # 刪除資料夾,資料夾必須為空
Path.unlink() # 刪除檔案
到此這篇關於詳解如何使用Python實現刪除重複檔案的文章就介紹到這了,更多相關Python刪除重複檔案內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45