通过Python模块filecmp 对文件比较的实现方法


Posted in Python onJune 29, 2018

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指定要比较的文件名列表。函数返回包含3个list元素的元组,分别表示匹配、不匹配以及错误的文件列表。错误的文件指的是不存在的文件,或文件被琐定不可读,或没权限读文件,或者由于其他原因访问不了该文件。

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 相关文章推荐
Python的socket模块源码中的一些实现要点分析
Jun 06 Python
python自动化报告的输出用例详解
May 30 Python
python用pandas数据加载、存储与文件格式的实例
Dec 07 Python
python实现彩色图转换成灰度图
Jan 15 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
PyTorch实现更新部分网络,其他不更新
Dec 31 Python
Python devel安装失败问题解决方案
Jun 09 Python
Python如何读写二进制数组数据
Aug 01 Python
python switch 实现多分支选择功能
Dec 21 Python
python文件目录操作之os模块
May 08 Python
Python实现视频中添加音频工具详解
Dec 06 Python
python的html标准库
Apr 29 Python
Python之列表的插入&amp;替换修改方法
Jun 28 #Python
python 寻找list中最大元素对应的索引方法
Jun 28 #Python
对numpy.append()里的axis的用法详解
Jun 28 #Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 #Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 #Python
Python格式化日期时间操作示例
Jun 28 #Python
Python subprocess模块功能与常见用法实例详解
Jun 28 #Python
You might like
PHP 面向对象 final类与final方法
2010/05/05 PHP
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
2020/09/04 Javascript
js实现随机点名
2021/01/19 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
聊聊Python中的pypy
2018/01/12 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
皮肤科医师岗位职责
2013/12/04 职场文书
大学生个人自荐信样本
2014/03/02 职场文书
外贸专业求职信
2014/03/09 职场文书
诉讼代理人授权委托书
2014/04/08 职场文书
感恩老师演讲稿400字
2014/08/28 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
如何用JavaScipt测网速
2021/05/09 Javascript
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA