使用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连接mssql数据库编码问题解决方法
Jan 01 Python
python删除列表中重复记录的方法
Apr 28 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
Python实现pdf文档转txt的方法示例
Jan 19 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
May 10 Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 Python
python如何编写win程序
Jun 08 Python
Python使用struct处理二进制(pack和unpack用法)
Nov 12 Python
python 基于opencv 绘制图像轮廓
Dec 11 Python
python使用smtplib模块发送邮件
Dec 17 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中is_dir()函数使用指南
2015/05/08 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
2014/01/09 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
2016/12/17 Javascript
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
python实现爬取千万淘宝商品的方法
2015/06/30 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
python模拟斗地主发牌
2020/04/22 Python
基于Python实现简单学生管理系统
2020/07/24 Python
Python页面加载的等待方式总结
2021/02/28 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
生产车间主管岗位职责
2013/12/28 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
给校长的建议书400字
2014/05/15 职场文书
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL