使用Python进行目录的对比方法


Posted in Python onNovember 01, 2018

如果进行单个文件的比较,可以使用difflib模块。虽然filecmp模块也能够进行单个文件的对比,但是前者能够提供观感更好的报告。如果我们只是想看一下两个目录中的某个文件是否一致而不关系其中的内容,那么后者或许是更改选的选择。

如果进行目录的对比,那么可以使用filecmp模块了。

在IPython中进行简单的命令交互演示功能如下:

In [1]: import filecmp

In [2]: ls

Chapter_01/ Chapter_02/

In [3]: dirobj = filecmp.dircmp('Chapter_01','Chapter_02')

输出两个目录差异报告

In [4]: dirobj.report()

diff Chapter_01 Chapter_02

Only in Chapter_01 : ['ip.py', 'os_mem.py', 'pid.py']

Only in Chapter_02 : ['d1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']

Identical files : ['c01.py']

输出部分报告(最外面的目录曾经,这里与第一个无差异是因为没有子目录)

In [5]: dirobj.report_partial_closure()

diff Chapter_01 Chapter_02

Only in Chapter_01 : ['ip.py', 'os_mem.py', 'pid.py']

Only in Chapter_02 : ['d1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']

Identical files : ['c01.py']

输出全部报告

In [6]: dirobj.report_full_closure()

diff Chapter_01 Chapter_02

Only in Chapter_01 : ['ip.py', 'os_mem.py', 'pid.py']

Only in Chapter_02 : ['d1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']

Identical files : ['c01.py']

查看一下输出结果对象格式,这个格式略显奇怪了一些

In [7]: type(dirobj.report_full_closure())

diff Chapter_01 Chapter_02

Only in Chapter_01 : ['ip.py', 'os_mem.py', 'pid.py']

Only in Chapter_02 : ['d1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']

Identical files : ['c01.py']

Out[7]: NoneType

尝试把结果对象转换为字符串

In [8]: str(dirobj.report_full_closure())

diff Chapter_01 Chapter_02

Only in Chapter_01 : ['ip.py', 'os_mem.py', 'pid.py']

Only in Chapter_02 : ['d1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']

Identical files : ['c01.py']

Out[8]: 'None'

输出左边目录的清单

In [9]: dirobj.left_list

Out[9]: ['c01.py', 'ip.py', 'os_mem.py', 'pid.py']

右边目录清单

In [10]: dirobj.right_list

Out[10]: 

['c01.py',

 'd1.py',

 'd2.py',

 'diff.py',

 'diff.zip',

 'dns_parser.py',

 'join.py',

 'pydiff.py',

 'report.html']

仅在右边目录中存在的文件清单

In [11]: dirobj.right_only

Out[11]: 

['d1.py',

 'd2.py',

 'diff.py',

 'diff.zip',

 'dns_parser.py',

 'join.py',

 'pydiff.py',

 'report.html']

共有的子目录

In [12]: dirobj.common_dirs

Out[12]: []

共有的文件

In [13]: dirobj.common_files

Out[13]: ['c01.py']

无法比较的目录

In [14]: dirobj.common_funny

Out[14]: []

相同的文件

In [15]: dirobj.same_files

Out[15]: ['c01.py']

无法比较的文件

In [16]: dirobj.funny_files

Out[16]: []

在MATLAB中有一个我经常使用的命令——visdiff,可以用于文件或者目录的对比。如此比较下来,Python基本上也提供了MATLAB相应命令所提供的功能。不过,MATLAB的使用更为简单,似乎也更为细致一些。不过,考虑使用Python还是有必要的。首先是Python免费,其次是启动速度大概比MATLAB快不少吧!除此之外,现在的Python凑代码也是蛮简单的,在自己需要的时候几行代码拼凑一般就能够实现自己要的功能了。

以上这篇使用Python进行目录的对比方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中分数的相关使用教程
Mar 30 Python
利用Python开发实现简单的记事本
Nov 15 Python
tensorflow实现简单的卷积神经网络
May 24 Python
Python装饰器的执行过程实例分析
Jun 04 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
Dec 10 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 Python
python分布式编程实现过程解析
Nov 08 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
Jan 12 Python
Python捕获异常堆栈信息的几种方法(小结)
May 18 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
May 22 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 Python
详解python Todo清单实战
Nov 01 #Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 #Python
对numpy中二进制格式的数据存储与读取方法详解
Nov 01 #Python
使用python获取电脑的磁盘信息方法
Nov 01 #Python
在IPython中执行Python程序文件的示例
Nov 01 #Python
在IPython中进行Python程序执行时间的测量方法
Nov 01 #Python
Python找出微信上删除你好友的人脚本写法
Nov 01 #Python
You might like
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
javascript web页面刷新的方法收集
2009/07/02 Javascript
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
js获取页面description的方法
2015/05/21 Javascript
javascript父子页面通讯实例详解
2015/07/17 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
在vue中使用vant TreeSelect分类选择组件操作
2020/11/02 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
应届生体育教师自荐信
2013/10/03 职场文书
教师绩效工资方案
2014/02/01 职场文书
小学班主任评语大全
2014/04/23 职场文书
关爱留守儿童标语
2014/06/18 职场文书
解放思想大讨论活动心得体会
2014/09/11 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2014年外联部工作总结
2014/11/17 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
Python实战之实现简易的学生选课系统
2021/05/25 Python