Python filecmp模块详解:文件与目录比较实战指南

Theo
Theo
发布时间:2026-10-13| 1人浏览过
原创

本文详细介绍Python内置模块filecmp的使用方法,涵盖cmp函数进行单文件内容比对、cmpfiles函数批量比较指定文件以及dircmp类递归分析目录结构差异。通过具体代码示例,解析匹配、不匹配及错误文件的判定逻辑,帮助开发者高效实现文件同步与差异检测功能。

filecmp模块提供了两个核心函数,旨在简化文件与文件夹的比较操作:

filecmp.cmp(f1, f2[, shallow]):

该函数用于判断两个文件的内容是否一致。参数f1和f2分别代表待比较的两个文件路径。可选参数shallow用于控制比较时是否考量文件属性(如通过os.stat获取的属性信息)。若文件内容完全匹配,函数返回True;否则返回False。

import filecmp 
s = filecmp.cmp("qin.txt", "jian.txt") 
print(s) 

运行结果如下:

当两个文件内容相同时返回True,内容不同时返回False。

filecmp.cmpfiles(dir1, dir2, common[, shallow]):

该函数用于比较两个指定文件夹中特定文件的一致性。参数dir1和dir2指定待比较的文件夹路径,common参数为需要比较的文件名列表。函数返回一个包含三个列表的元组,分别对应匹配文件列表、不匹配文件列表以及错误文件列表。其中,“错误文件”指代那些不存在、被锁定不可读、无读取权限或因其他原因无法访问的文件。

import filecmp 
match,mismatch,errors = filecmp.cmpfiles("qin", "fu",['a.txt','b.txt']) 
print("%s\n%s\n%s"%(match,mismatch,errors)) 

运行结果如下:

['a.txt'] -- 表示两个文件都有该文件,并且完全匹配 ['b.txt'] -- 表示两个文件都有该文件,但是不匹配 [] -- 表示没有错误的文件

filecmp模块还定义了一个dircmp类,专门用于文件夹比较。利用该类对比两个文件夹,可以获取更详细的差异信息(例如仅存在于A文件夹中的文件列表),并且支持对子文件夹进行递归比较。

dircmp类提供了三种报告比较结果的方法:

report():仅比较指定文件夹内的内容(包括文件与子文件夹); report_partial_closure():比较指定文件夹及其第一级子文件夹的内容; report_full_closure():递归比较所有层级的文件夹内容。

示例场景:在文件夹"qin"中包含文件"a.txt",在文件夹"fu"中包含文件"a.txt"和"b.txt",且两个文件夹下的文件"a.txt"内容相同,

<span style="font-size: 12px;">import filecmp 
x = filecmp.dircmp("qin","fu") 
diff = x.report() 
print(diff)</span> 

输出结果如下:

diff qin fu Only in fu: ["b.txt"] Identical files: ["qin.txt"]

若两个文件夹下的文件"a.txt"内容不同,则结果如下:

输出结果如下:

diff qin fu Only in fu: ["b.txt"] Differing files: ["a.txt"]

dircmp类还提供了以下属性,用于获取更细致的比较结果:

•left_list:左侧文件夹中的文件与文件夹列表; •right_list:右侧文件夹中的文件与文件夹列表; •common:两侧文件夹中都存在的文件或文件夹; •left_only:仅存在于左侧文件夹中的文件或文件夹; •right_only:仅存在于右侧文件夹中的文件或文件夹; •common_dirs:两侧文件夹都存在的子文件夹; •common_files:两侧文件夹都存在的子文件; •common_funny:两侧文件夹都存在的子文件夹; •same_files:匹配的文件; •diff_files:不匹配的文件; •funny_files:两侧文件夹中都存在,但无法比较的文件; •subdirs:该属性含义尚不明确,Python手册中的解释如下:A dictionary mapping names in common_dirs to dircmp objects

总结

以上所述是小编给大家介绍的通过Python模块filecmp 对文件比较的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。