博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
8.5 filecmp--文件和文件夹比較处理
阅读量:5918 次
发布时间:2019-06-19

本文共 2114 字,大约阅读时间需要 7 分钟。

本模块主要提供了对文件和文件夹进行简单的比較处理,假设须要复杂的文件比較须要使用difflib库来处理。

filecmp.cmp(f1, f2, shallow=True)

比較文件f1和文件f2,当两个文件同样时返回True,否则返回False。假设參数shallowTrue,仅仅推断os.stat()函数返回内容是否同样,假设同样就返回True。否则再比較文件内容是否同样,假设同样也返回True。使用shallow參数能够高速地比較文件是否有改动过。

样例:

#python 3.4

import filecmp

 

r = filecmp.cmp('F:\\temp\\py\\bisect2.py', 'F:\\temp\\py\\bisect2.py')

print(r)

r = filecmp.cmp('F:\\temp\\py\\bisect2.py', 'F:\\temp\\py\\cal_1.py')

print(r)

结果输出例如以下:

True

False

 

filecmp.cmpfiles(dir1, dir2, common, shallow=True)

比較两个文件夹里同样文件列表的文件。參数dir1是文件夹1,參数dir2是文件夹2。參数common是比較的文件列表。參数shallow是跟上面的函数是一样意义。

本函数执行之后返回三个文件名称列表:同样列表、不同样列表、错误列表。假设文件同样放在同样列表,不同样放不同样列表。假设文件不存在某一个文件夹。就放错误列表。

样例:

#python 3.4

import filecmp

 

dir1 = 'F:\\temp\\py\\dir1'

dir2 = 'F:\\temp\\py\\dir2'

r = filecmp.cmpfiles(dir1, dir2,

                     ['difflib1.py', 'difflib5.py', 'test1.txt'])

print(r)

结果输出例如以下:

(['difflib1.py'], ['difflib5.py'], ['test1.txt'])

 

filecmp.clear_cache()

清除文件比較缓冲区。当比較的文件不断地高速改动时,就能够使用这个函数来更新文件的信息。

 

class filecmp.dircmp(a, b, ignore=None, hide=None)

构造一个新的文件夹比較对象,比較文件夹ab。參数ignore是忽略列表,是指那些文件不须要进行比較的;參数hide是隐藏的文件列表,默认是[os.curdir, os.pardir]

这个类主要提供以下的方法:

report()

打印ab之间的比較结果到系统sys.stdout输出。

 

report_partial_closure()

打印文件夹ab。以及公共的子文件夹的比較结果到系统sys.stdout输出。

 

report_full_closure()

递归全部目标,包含子文件夹,把结果比較输出。

 

left

内部表示文件夹a

 

right

内部表示文件夹b

 

left_list

内部表示文件夹a经过隐藏和忽略过滤的文件和子文件夹列表。

 

right_list

内部表示文件夹b经过隐藏和忽略过滤的文件和子文件夹列表。

 

common

文件夹ab都有的公共文件和子文件夹。

 

left_only

仅在文件夹a出现的文件和子文件夹。

 

right_only

仅在文件夹b出现的文件和子文件夹。

 

common_dirs

在文件夹a和文件夹b都出现的子文件夹。

 

common_files

在文件夹a和文件夹b都出现的文件。

 

common_funny

比較文件夹ab不同的文件夹或文件。通过os.stat()比較。

 

same_files

比較文件夹ab同样的文件夹或文件。

 

diff_files

比較文件夹ab不同的文件夹或文件。通过文件内容比較。

 

funny_files

不进行比較的文件。

 

subdirs

子文件夹字典。

 

filecmp.DEFAULT_IGNORES

须要忽略的文件列表。

 

样例:

from filecmp import dircmp

def print_diff_files(dcmp):

     for name in dcmp.diff_files:

         print("diff_file %s found in %s and %s" % (name, dcmp.left,

               dcmp.right))

     for sub_dcmp in dcmp.subdirs.values():

         print_diff_files(sub_dcmp)

 

dcmp = dircmp('dir1', 'dir2')

print_diff_files(dcmp)

在这个样例里,主要比較文件夹dir1dir2,为此创建了dircmp对象dcmp,然后调用函数print_diff_files()。在这个函数里主要打印输出不同的文件,并递归到子文件夹里打印子文件夹里不同的文件输出。

蔡军生 QQ:9073204  深圳

转载地址:http://xpfvx.baihongyu.com/

你可能感兴趣的文章
通过“集成为先”的方法为支付终端构建商务平台
查看>>
Mango 的组织重构
查看>>
比特币寒冬中,你更应该关注企业区块链!
查看>>
优酷在多模态内容理解上的研究及应用
查看>>
NativeScript 2.4版本发布,支持Web Workers规范
查看>>
从微服务迁移到工作流的经验之谈
查看>>
Oracle即将发布的全新Java垃圾收集器 ZGC
查看>>
使用Vue构建桌面应用程序:Vuido
查看>>
内部领导力:向敏捷演化
查看>>
\"Grokking Algorithms\"简介与作者采访
查看>>
Vue性能优化:如何实现延迟加载和代码拆分?
查看>>
京东Taro框架深度实践
查看>>
Nexus指南已经发布
查看>>
一天一点linux(14):Ubuntu14.04 如何添加navicat快捷方式?
查看>>
爱恨交织!我们经常抱怨却离不开的7种语言
查看>>
详解JS类概念的实现
查看>>
【总结】数据可视化:柱状图、折线图、饼图等六种基本图表的特点及适用场合...
查看>>
图解phpstorm常用快捷键
查看>>
怎样使用this
查看>>
【算法】遍历1到N的全排列
查看>>