使用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类属性与实例属性用法分析
May 09 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
浅谈pandas用groupby后对层级索引levels的处理方法
Nov 06 Python
Python面向对象进阶学习
May 21 Python
Python的垃圾回收机制详解
Aug 28 Python
python 两个数据库postgresql对比
Oct 21 Python
Python加密模块的hashlib,hmac模块使用解析
Jan 02 Python
keras的三种模型实现与区别说明
Jul 03 Python
如何验证python安装成功
Jul 06 Python
python xlwt模块的使用解析
Apr 13 Python
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
May 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根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
PHP file_get_contents设置超时处理方法
2013/09/30 PHP
php判断两个浮点数是否相等的方法
2015/03/14 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
类似框架的js代码
2006/11/09 Javascript
javascript+mapbar实现地图定位
2010/04/09 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
2017/05/17 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
import的本质解析
2017/10/30 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
详解python持久化文件读写
2019/04/06 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
python如何将多个PDF进行合并
2019/08/13 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
2020/04/27 Python
python pip如何手动安装二进制包
2020/09/30 Python
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
机电专业体育教师求职信
2013/09/21 职场文书
函授毕业生的自我鉴定
2013/11/26 职场文书
大学四年个人自我小结
2014/03/05 职场文书
优秀少先队工作者事迹材料
2014/05/13 职场文书
房屋维修协议书范本
2014/09/25 职场文书
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android
Python中Schedule模块使用详解 周期任务神器
2022/04/19 Python