最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)刪除重復(fù)文件的示例代碼

 更新時(shí)間:2023年02月14日 16:16:25   作者:一青一檸  
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)刪除重復(fù)文件功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的小伙伴的可以了解一下

此程序主要是針對(duì)某個(gè)目錄下的全部文件進(jìn)行篩選,會(huì)刪除重復(fù)的文件。

原理很簡(jiǎn)單,會(huì)計(jì)算每個(gè)文件的哈希,將哈希存入一個(gè)字典,文件名對(duì)應(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)

在使用的時(shí)候直接調(diào)用下面那個(gè)函數(shù)即可,傳入?yún)?shù)為目錄路徑。

例如下面這樣:

remove_duplicate_files("Y:\圖片合集")

當(dāng)然,你也可以將程序打包為一個(gè)exe文件,甚至為它添加簡(jiǎn)單的頁面,讓非計(jì)算機(jī)專業(yè)的人也能輕易使用。

補(bǔ)充

當(dāng)然除了上文的方法,還有很多方法可以實(shí)現(xiàn),下面是小編為大家整理的內(nèi)容,希望對(duì)大家有所幫助

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指定輸出格式 
 # 控制臺(tái)日志 
 console_handler = logging.StreamHandler(sys.stdout) 
 console_handler.formatter = formatter # 也可以直接給formatter賦值 
 # 為logger添加的日志處理器 
 logger.addHandler(file_handler) 
 logger.addHandler(console_handler) 
 # 指定日志的最低輸出級(jí)別,默認(rèn)為WARN級(jí)別 
 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用python 將圖片復(fù)制到系統(tǒng)剪貼中

    使用python 將圖片復(fù)制到系統(tǒng)剪貼中

    今天小編就為大家分享一篇使用python 將圖片復(fù)制到系統(tǒng)剪貼中,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python 申請(qǐng)內(nèi)存空間,用于創(chuàng)建多維數(shù)組的實(shí)例

    python 申請(qǐng)內(nèi)存空間,用于創(chuàng)建多維數(shù)組的實(shí)例

    今天小編就為大家分享一篇python 申請(qǐng)內(nèi)存空間,用于創(chuàng)建多維數(shù)組的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python爬取肯德基官網(wǎng)ajax的post請(qǐng)求實(shí)現(xiàn)過程

    Python爬取肯德基官網(wǎng)ajax的post請(qǐng)求實(shí)現(xiàn)過程

    這篇文章主要介紹了Python爬取肯德基官網(wǎng)ajax的post請(qǐng)求實(shí)現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家學(xué)有所得,多多進(jìn)步
    2021-10-10
  • python列表生成器迭代器實(shí)例解析

    python列表生成器迭代器實(shí)例解析

    這篇文章主要介紹了python列表生成器迭代器實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • python實(shí)現(xiàn)簡(jiǎn)單猜單詞游戲

    python實(shí)現(xiàn)簡(jiǎn)單猜單詞游戲

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單猜單詞游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 使用python搭建代理IP池實(shí)現(xiàn)接口設(shè)置與整體調(diào)度

    使用python搭建代理IP池實(shí)現(xiàn)接口設(shè)置與整體調(diào)度

    在網(wǎng)絡(luò)爬蟲中,代理IP池是一個(gè)非常重要的組件,由于許多網(wǎng)站對(duì)單個(gè)IP的請(qǐng)求有限制,因此,我們需要一個(gè)代理IP池,在本文中,我們將使用Python來構(gòu)建一個(gè)代理IP池,然后,我們將使用這個(gè)代理IP池來訪問我們需要的數(shù)據(jù),文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2023-12-12
  • 深入淺析Python中l(wèi)ist的復(fù)制及深拷貝與淺拷貝

    深入淺析Python中l(wèi)ist的復(fù)制及深拷貝與淺拷貝

    這篇文章主要介紹了Python中l(wèi)ist的復(fù)制及深拷貝與淺拷貝及區(qū)別解析 ,需要的朋友可以參考下
    2018-09-09
  • 如何實(shí)現(xiàn)Django Rest framework版本控制

    如何實(shí)現(xiàn)Django Rest framework版本控制

    這篇文章主要介紹了如何實(shí)現(xiàn)Django Rest framework版本控制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 解決遇到PermissionError:[Errno 13] Permission denied:XXXX錯(cuò)誤的問題

    解決遇到PermissionError:[Errno 13] Permission den

    遇到"PermissionError:[Errno 13] Permission denied"通常是權(quán)限不足導(dǎo)致,解決此問題的方法包括檢查并更改文件權(quán)限,使用管理員權(quán)限運(yùn)行命令,或接觸文件所有者,這些步驟有助于確保用戶具有執(zhí)行操作所需的權(quán)限,有時(shí),文件或目錄可能被鎖定
    2024-09-09
  • Django 構(gòu)建模板form表單的兩種方法

    Django 構(gòu)建模板form表單的兩種方法

    這篇文章主要介紹了Django 構(gòu)建模板form表單的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06

最新評(píng)論

蕉岭县| 阳新县| 五指山市| 六枝特区| 嘉善县| 柞水县| 迁西县| 宜兰县| 仙居县| 东山县| 东山县| 东乌珠穆沁旗| 偃师市| 永丰县| 介休市| 故城县| 西盟| 青浦区| 明光市| 哈密市| 青冈县| 罗平县| 泰兴市| 顺平县| 杂多县| 焦作市| 德令哈市| 阿拉善左旗| 汤原县| 济源市| 阿尔山市| 双鸭山市| 夏津县| 高州市| 林周县| 潞西市| 阿勒泰市| 根河市| 松原市| 汉沽区| 濮阳县|