使用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操作sqlite3快速、安全插入数据(防注入)的实例
Apr 26 Python
Python函数参数类型*、**的区别
Apr 11 Python
Python中使用asyncio 封装文件读写
Sep 11 Python
python数据处理实战(必看篇)
Jun 11 Python
Python中的pack和unpack的使用
Mar 12 Python
python实现简单登陆流程的方法
Apr 22 Python
Python FTP文件定时自动下载实现过程解析
Nov 12 Python
Pyecharts绘制全球流向图的示例代码
Jan 08 Python
python实现将列表中各个值快速赋值给多个变量
Apr 02 Python
基于PyQT实现区分左键双击和单击
May 19 Python
jupyter notebook指定启动目录的方法
Mar 02 Python
Django框架中模型的用法
Jun 10 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 STRING 陷阱原理说明
2010/07/24 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
php猜单词游戏
2015/09/29 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
2016/12/28 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
2020/09/24 Javascript
python网络编程之读取网站根目录实例
2014/09/30 Python
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
英国行业制服供应商:Alexandra
2019/09/14 全球购物
西班牙最好的在线购买葡萄酒的商店:Vinoseleccion
2019/10/30 全球购物
如何判断计算机可能已经中马
2013/03/22 面试题
程序员岗位职责
2013/11/11 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
2014年法院工作总结
2014/11/24 职场文书
工程部部长岗位职责
2015/02/12 职场文书
Python内置数据结构列表与元组示例详解
2021/08/04 Python
python读取mnist数据集方法案例详解
2021/09/04 Python