Python实现轻松比较两个文件夹的多种方法

 更新时间:2025年09月24日 09:42:48   作者:Jack电子实验室  
在处理数据集时,我们经常会遇到两个文件夹中文件数目不一致的情况,本文我们就来使用Python比较一下两个文件夹,轻松实现找出多出的文件,有需要的可以了解下

在处理数据集时,我们经常会遇到两个文件夹中文件数目不一致的情况。这可能是由于某些文件被遗漏或者错误地删除导致的。为了快速找出哪些文件是多出来的,我们可以使用Python中的集合操作来实现。

首先,我们定义一个函数 get_files_in_directory(directory) 来获取指定目录中的所有文件名,并将其转换为一个集合:

import os

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

接下来,我们定义另一个函数 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

在这个函数中,我们首先使用 get_files_in_directory() 函数获取两个文件夹中的所有文件名,并将其转换为集合。然后,我们使用集合的差集操作 files_dir1 - files_dir2files_dir2 - files_dir1 来分别找出在 dir1 中多出的文件和在 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}")

这样,我们就可以快速地找出两个文件夹中多出的文件,并进行相应的处理。

全部代码:

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}")

方法补充

python比较两个文件是否一致

1.逐行比较

逐行比较是最简单的文件比较方法,适用于小文件。可以通过逐行读取两个文件的内容,并逐行进行比较。以下是一个简单的示例代码:

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

这种方法的优点是直观、易于理解,但缺点是对于大文件效率较低。

2.文件内容哈希

文件内容哈希是一种更高效的比较方法,特别适用于大文件。通过计算文件内容的哈希值,可以快速判断两个文件是否一致。以下是一个示例代码:

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.文件大小比较

文件大小比较是一种简单而快速的比较方法。对于某些情况下,如果两个文件的大小不同,那么它们的内容肯定不一致。以下是一个示例代码:

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

4.使用第三方库

使用filecmp库

filecmp库是Python标准库中的一个模块,可以方便地比较文件和目录。以下是一个示例代码:

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

这种方法的优点是使用方便,缺点是需要依赖第三方库。

使用difflib库

difflib库也是Python标准库中的一个模块,可以用于比较文件内容,并生成差异报告。以下是一个示例代码:

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)

这种方法的优点是可以生成详细的差异报告,缺点是需要依赖第三方库,并且对于大文件效率较低。

到此这篇关于Python实现轻松比较两个文件夹的多种方法的文章就介绍到这了,更多相关Python比较文件夹内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 2018年Python值得关注的开源库、工具和开发者(总结篇)

    2018年Python值得关注的开源库、工具和开发者(总结篇)

    本文给大家总结了2018年Python值得关注的开源库、工具和开发者,需要的朋友可以参考下
    2018-01-01
  • pytorch如何自定义数据集

    pytorch如何自定义数据集

    这篇文章主要介绍了pytorch自定义数据集,在识别手写数字的例子中,数据集是直接下载的,但如果我们自己收集了一些数据,存在电脑文件夹里,我们该如何把这些数据变为可以在PyTorch框架下进行神经网络训练的数据集呢,即如何自定义数据集呢,需要的朋友可以参考下
    2024-01-01
  • Python中切片操作符的具体使用

    Python中切片操作符的具体使用

    Python切片操作用于提取序列(如列表、字符串)的子集,支持正负索引和步长,返回浅拷贝新对象,切片操作通常用于列表、元组、字符串等,下面就具体来了解一下
    2025-07-07
  • 用python处理图片之打开\显示\保存图像的方法

    用python处理图片之打开\显示\保存图像的方法

    本篇文章主要介绍了用python处理图片之打开\显示\保存图像的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • python中几个常用函数的正确用法-lambda/filter/map/reduce

    python中几个常用函数的正确用法-lambda/filter/map/reduce

    这篇文章主要介绍了python中几个常用函数的正确用法,这几个常用函数包括lambda、filter、map、reduce,本文将围绕这几个常用函数展开内容,需要的朋友可以参考一下
    2021-11-11
  • Python制作脚本帮女朋友抢购清空购物车

    Python制作脚本帮女朋友抢购清空购物车

    这篇文章主要介绍了Python制作的抢购清空购物车的脚本,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)

    matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)

    这篇文章主要介绍了matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python 语法错误:"SyntaxError: invalid character in identifier"原因及解决方法

    Python 语法错误:"SyntaxError: invalid charac

    本文给大家分享Python 语法错误:“SyntaxError: invalid character in identifier“,原因及解决方法,文末给大家补充介绍了Python出现SyntaxError: invalid syntax的原因总结,感兴趣的朋友跟随小编一起学习吧
    2023-02-02
  • python 变量初始化空列表的例子

    python 变量初始化空列表的例子

    今天小编就为大家分享一篇python 变量初始化空列表的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 基于Python_脚本CGI、特点、应用、开发环境(详解)

    基于Python_脚本CGI、特点、应用、开发环境(详解)

    下面小编就为大家带来一篇基于Python_脚本CGI、特点、应用、开发环境(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05

最新评论