文件与目录差异对比模块filecmp

Posted Jabe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件与目录差异对比模块filecmp相关的知识,希望对你有一定的参考价值。

   简介

      当我们进行代码审计或校验备份结果时,往往需要检查原始与目标目录的文件一致性,python的标准库已经自带了满足此需求的模块filecmp。filecmp可以实现文件、目录、遍历子目录的差异对比功能。比如报告中输出目标目录比原始多出的文件或子目录,即使文件同名也会判断是否为同一个文件(内容级对比)等,python2.3以上版本自带了filecmp模块,无需额外安装。

模块常用方法说明

      filecmp 提供了三个操作方法,分别为cmp(单文件对比)、cmpfiles(多文件对比)、dircmp(目录对比)

单文件对比,采用filecmp.cmp(f1,f2[,shallow])方法,比较文件名为f1和f2的文件,相同返回True,不相同返回False,shallow默认为True,意思是只根据os.stat()方法返回的文件基本信息进行对比,比如访问的时间、修改时间、状态改变时间等,会忽略文件内容的对比。当shallow为 False时,则os.stat()与文件内容同时进行校验。

>>> import filecmp
>>> filecmp.cmp("nginx.conf.v1","nginx.conf.v2")
False
>>> 

 多文件对比,采用filecmp.cmpfiles(dir1,dir2,common[,shallow])方法,对比dir1与dir2目录给定文件清单。该方法返回文件名的三个列表,分别为匹配、不匹配、错误。匹配为包含匹配的文件列表,不匹配反之,错误列表包含了目录不存在的文件、不具备读权限或其他原因导致的不能比较的文件清单。

 

以上是关于文件与目录差异对比模块filecmp的主要内容,如果未能解决你的问题,请参考以下文章

文件与目录差异对比

文件与目录差异对比方法

Python 之 filecmp

目录差异对比

Python学习笔记-校验源与备份目录差异

Python 文件目录比较工具filecmp和difflib