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

 更新时间:2018年11月01日 11:08:17   作者:grey_csdn  
今天小编就为大家分享一篇使用Python进行目录的对比方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

如果进行单个文件的比较,可以使用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去除扩展名的实例讲解

    下面小编就为大家分享一篇python去除扩展名的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 利用Pytorch实现获取特征图的方法详解

    利用Pytorch实现获取特征图的方法详解

    这篇文章主要为大家详细介绍了如何利用Pytorch实现获取特征图,包括提取单个特征图和提取多个特征图,文中的示例代码讲解详细,需要的可以参考一下
    2022-10-10
  • Python办公自动化之自动化文本翻译详解

    Python办公自动化之自动化文本翻译详解

    这篇文章主要为大家详细介绍了Python办公自动化中自动化文本翻译的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • Python代理IP爬虫的新手使用教程

    Python代理IP爬虫的新手使用教程

    这篇文章主要给大家介绍了关于Python代理IP爬虫的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • 详解Python 3.10 中的新功能和变化

    详解Python 3.10 中的新功能和变化

    这篇文章主要介绍了详解Python 3.10 中的新功能和变化,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • Python简洁优雅的推导式示例详解

    Python简洁优雅的推导式示例详解

    这篇文章主要给大家介绍了关于Python简洁优雅的推导式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 经验丰富程序员才知道的8种高级Python技巧

    经验丰富程序员才知道的8种高级Python技巧

    这篇文章主要介绍了经验丰富程序员才知道的8种高级Python技巧,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Python实现绘制Matlab格式的地图边框的示例代码

    Python实现绘制Matlab格式的地图边框的示例代码

    这篇文章主要为大家详细介绍了如何利用Python实现绘制Matlab格式的地图边框,文中的示例代码讲解详细,感兴趣的小伙伴可以动手尝试一下
    2022-09-09
  • Python OpenCV特征检测之特征匹配方式详解

    Python OpenCV特征检测之特征匹配方式详解

    OpenCV中提供了两种技术用于特征匹配,分别为Brute-Force匹配器和基于FLANN的匹配器。本文将为大家详细介绍一下这两种匹配方式,需要的可以参考一下
    2021-12-12
  • Python 的 with 语句详解

    Python 的 with 语句详解

    这篇文章主要介绍了Python 的 with 语句,本文详细讲解了with语句、with语句的历史、with语句的使用例子等,需要的朋友可以参考下
    2014-06-06

最新评论