欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)輕松比較兩個文件夾的多種方法

 更新時間:2025年09月24日 09:42:48   作者:Jack電子實(shí)驗(yàn)室  
在處理數(shù)據(jù)集時,我們經(jīng)常會遇到兩個文件夾中文件數(shù)目不一致的情況,本文我們就來使用Python比較一下兩個文件夾,輕松實(shí)現(xiàn)找出多出的文件,有需要的可以了解下

在處理數(shù)據(jù)集時,我們經(jīng)常會遇到兩個文件夾中文件數(shù)目不一致的情況。這可能是由于某些文件被遺漏或者錯誤地刪除導(dǎo)致的。為了快速找出哪些文件是多出來的,我們可以使用Python中的集合操作來實(shí)現(xiàn)。

首先,我們定義一個函數(shù) get_files_in_directory(directory) 來獲取指定目錄中的所有文件名,并將其轉(zhuǎn)換為一個集合:

import os

def get_files_in_directory(directory):
    """獲取指定目錄中的所有文件名"""
    return set(os.listdir(directory))

接下來,我們定義另一個函數(shù) find_extra_files(dir1, dir2) 來比較兩個文件夾中的文件差異:

def find_extra_files(dir1, dir2):
    """找出在 dir1 中但不在 dir2 中的文件"""
    files_dir1 = get_files_in_directory(dir1)
    files_dir2 = get_files_in_directory(dir2)

    extra_in_dir1 = files_dir1 - files_dir2
    extra_in_dir2 = files_dir2 - files_dir1

    return extra_in_dir1, extra_in_dir2

在這個函數(shù)中,我們首先使用 get_files_in_directory() 函數(shù)獲取兩個文件夾中的所有文件名,并將其轉(zhuǎn)換為集合。然后,我們使用集合的差集操作 files_dir1 - files_dir2files_dir2 - files_dir1 來分別找出在 dir1 中多出的文件和在 dir2 中多出的文件。

最后,我們可以使用這個函數(shù)來比較兩個文件夾,并輸出結(jié)果:

# 示例用法
dir1 = r'F:\datesate\datasetnii\date-png\tumor_image'  
dir2 = r'F:\datesate\datasetnii\date-png\tumor_lable'  

extra_in_dir1, extra_in_dir2 = find_extra_files(dir1, dir2)

print(f"在 {dir1} 中多出的文件: {extra_in_dir1}")
print(f"在 {dir2} 中多出的文件: {extra_in_dir2}")

這樣,我們就可以快速地找出兩個文件夾中多出的文件,并進(jìn)行相應(yīng)的處理。

全部代碼:

import os

def get_files_in_directory(directory):
    """獲取指定目錄中的所有文件名"""
    return set(os.listdir(directory))

def find_extra_files(dir1, dir2):
    """找出在 dir1 中但不在 dir2 中的文件"""
    files_dir1 = get_files_in_directory(dir1)
    files_dir2 = get_files_in_directory(dir2)

    extra_in_dir1 = files_dir1 - files_dir2
    extra_in_dir2 = files_dir2 - files_dir1

    return extra_in_dir1, extra_in_dir2

# 示例用法
dir1 = r'F:\datesate\datasetnii\date-png\tumor_image'  # 替換為第一個文件夾的路徑
dir2 = r'F:\datesate\datasetnii\date-png\tumor_lable'  # 替換為第二個文件夾的路徑

extra_in_dir1, extra_in_dir2 = find_extra_files(dir1, dir2)

print(f"在 {dir1} 中多出的文件: {extra_in_dir1}")
print(f"在 {dir2} 中多出的文件: {extra_in_dir2}")

方法補(bǔ)充

python比較兩個文件是否一致

1.逐行比較

逐行比較是最簡單的文件比較方法,適用于小文件??梢酝ㄟ^逐行讀取兩個文件的內(nèi)容,并逐行進(jìn)行比較。以下是一個簡單的示例代碼:

def compare_files_line_by_line(file1, file2):
    with open(file1, 'r') as f1, open(file2, 'r') as f2:
        for line1, line2 in zip(f1, f2):
            if line1 != line2:
                return False
            return True

這種方法的優(yōu)點(diǎn)是直觀、易于理解,但缺點(diǎn)是對于大文件效率較低。

2.文件內(nèi)容哈希

文件內(nèi)容哈希是一種更高效的比較方法,特別適用于大文件。通過計算文件內(nèi)容的哈希值,可以快速判斷兩個文件是否一致。以下是一個示例代碼:

import hashlib
def get_file_hash(file_path):
    hash_md5 = hashlib.md5()
    with open(file_path, 'rb') as f:
        for chunk in iter(lambda: f.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()
def compare_files_by_hash(file1, file2):
    return get_file_hash(file1) == get_file_hash(file2)

3.文件大小比較

文件大小比較是一種簡單而快速的比較方法。對于某些情況下,如果兩個文件的大小不同,那么它們的內(nèi)容肯定不一致。以下是一個示例代碼:

import os
def compare_files_by_size(file1, file2):
    return os.path.getsize(file1) == os.path.getsize(file2)

4.使用第三方庫

使用filecmp庫

filecmp庫是Python標(biāo)準(zhǔn)庫中的一個模塊,可以方便地比較文件和目錄。以下是一個示例代碼:

import filecmp
def compare_files_with_filecmp(file1, file2):
???????return filecmp.cmp(file1, file2, shallow=False)

這種方法的優(yōu)點(diǎn)是使用方便,缺點(diǎn)是需要依賴第三方庫。

使用difflib庫

difflib庫也是Python標(biāo)準(zhǔn)庫中的一個模塊,可以用于比較文件內(nèi)容,并生成差異報告。以下是一個示例代碼:

import difflib

def compare_files_with_difflib(file1, file2):
    with open(file1, 'r') as f1, open(file2, 'r') as f2:
        diff = difflib.unified_diff(f1.readlines(), f2.readlines())
        
        return list(diff)

這種方法的優(yōu)點(diǎn)是可以生成詳細(xì)的差異報告,缺點(diǎn)是需要依賴第三方庫,并且對于大文件效率較低。

到此這篇關(guān)于Python實(shí)現(xiàn)輕松比較兩個文件夾的多種方法的文章就介紹到這了,更多相關(guān)Python比較文件夾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Django模版生成樹狀結(jié)構(gòu)實(shí)例代碼

    利用Django模版生成樹狀結(jié)構(gòu)實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于利用Django模版生成樹狀結(jié)構(gòu)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python實(shí)現(xiàn)簡單查找最長子串功能示例

    Python實(shí)現(xiàn)簡單查找最長子串功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)簡單查找最長子串功能,涉及字符串遍歷、統(tǒng)計等相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • flask框架中勾子函數(shù)的使用詳解

    flask框架中勾子函數(shù)的使用詳解

    這篇文章主要介紹了flask框架中勾子函數(shù)的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Python Selenium自動化獲取頁面信息的方法

    Python Selenium自動化獲取頁面信息的方法

    這篇文章主要介紹了Python Selenium自動化獲取頁面信息的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Pandas如何操作Excel

    Pandas如何操作Excel

    Pandas提供了便捷的方法來處理Excel文件,主要通過pandas.read_excel()和DataFrame.to_excel()函數(shù),這些函數(shù)支持多種參數(shù)來定制讀取和寫入的行為,包括文件路徑、工作表名稱、數(shù)據(jù)類型、日期解析等
    2025-01-01
  • Python 循環(huán)語句之 while,for語句詳解

    Python 循環(huán)語句之 while,for語句詳解

    Python中有兩種循環(huán),分別為:for循環(huán)和while循環(huán)。 for循環(huán)可以遍歷任何序列的項(xiàng)目,如一個列表或者一個字符串。while 語句用于循環(huán)執(zhí)行程序,即在某條件下,循環(huán)執(zhí)行某段程序,以處理需要重復(fù)處理的相同任務(wù)。
    2018-04-04
  • python字典遍歷數(shù)據(jù)的具體做法

    python字典遍歷數(shù)據(jù)的具體做法

    在本篇文章里小編給大家整理了一篇關(guān)于python字典遍歷數(shù)據(jù)的具體做法及相關(guān)代碼,有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-07-07
  • 談?wù)凱ython進(jìn)行驗(yàn)證碼識別的一些想法

    談?wù)凱ython進(jìn)行驗(yàn)證碼識別的一些想法

    關(guān)于python驗(yàn)證碼識別,主要方法有幾類:一類是通過對圖片進(jìn)行處理,然后利用字庫特征匹配的方法,一類是圖片處理后建立字符對應(yīng)字典,還有一類是直接利用ocr模塊進(jìn)行識別。不管是用什么方法,都需要首先對圖片進(jìn)行處理,于是試著對下面的驗(yàn)證碼進(jìn)行分析
    2016-01-01
  • python?http通信接口開發(fā)示例

    python?http通信接口開發(fā)示例

    本文主要介紹了python?http通信接口開發(fā)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 詳解Python 合并字典

    詳解Python 合并字典

    這篇文章主要為大家介紹了Python的合并字典,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12

最新評論