python刪除本地夾里重復(fù)文件的方法
上次的博文主要說了從網(wǎng)上下載圖片,于是我把整個(gè)笑話網(wǎng)站的圖片都拔下來了,但是在拔取的圖片中有很多重復(fù)的,比如說頁面的其他圖片、重復(fù)發(fā)布的圖片等等。所以我又找了python的一些方法,寫了一個(gè)腳本可以刪除指定文件夾里重復(fù)的圖片。
一、方法和思路
1.比對文件是否相同的方法:hashlib庫里提供了獲取文件md5值的方法,所以我們可以通過md5值來判定是否圖片相同
2.對文件的操作:os庫里有對文件的操作方法,比如:os.remove()可以刪除指定的文件, os.listdir()可以通過指定文件夾路徑獲取文件夾里所有文件的文件名
思路:通過獲取指定文件夾的所有文件名,然后匹配為一個(gè)絕對路徑的列表,循環(huán)的比對每個(gè)文件的md5值,如果md5值重復(fù),則刪除這個(gè)文件
二、代碼實(shí)現(xiàn)
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))
然后我們可以通過日志來查看到底哪些文件是重復(fù)的,不過對于一些超大文件的話,md5值的獲取會有一些變化,不過處理一般的小文件都可以的,只需要替換我的路徑,就可以在你電腦上運(yùn)行啦。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)批量轉(zhuǎn)換圖片為黑白
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)批量轉(zhuǎn)換圖片為黑白,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
python中的對數(shù)log函數(shù)表示及用法
在本篇文章里小編給大家整理了一篇關(guān)于python中的對數(shù)log函數(shù)表示及用法,有需要的朋友們可以學(xué)習(xí)下。2020-12-12
利用LyScript實(shí)現(xiàn)應(yīng)用層鉤子掃描器
Capstone 是一個(gè)輕量級的多平臺、多架構(gòu)的反匯編框架。本篇文章將運(yùn)用LyScript插件結(jié)合Capstone反匯編引擎實(shí)現(xiàn)一個(gè)鉤子掃描器,感興趣的可以了解一下2022-08-08
opencv python 圖像輪廓/檢測輪廓/繪制輪廓的方法
這篇文章主要介紹了opencv python 圖像輪廓/檢測輪廓/繪制輪廓的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python通過pytesseract庫實(shí)現(xiàn)識別圖片中的文字
Pytesseract是一個(gè)Python的OCR庫,它可以識別圖片中的文本并將其轉(zhuǎn)換成文本形式。本文就來用pytesseract庫實(shí)現(xiàn)識別圖片中的文字,感興趣的可以了解一下2023-05-05

