通过Python模块filecmp 对文件比较的实现方法

filecmp定义了两个函数,用于方便地比较文件与文件夹:

    filecmp.cmp(f1, f2[, shallow]):

比较两个文件的内容是否匹配。参数f1, f2指定要比较的文件的路径。可选参数shallow指定比较文件时是否需要考虑文件本身的属性(通过   os.stat函数可以获得文件属性)。如果文件内容匹配,函数返回True,否则返回False,

import filecmp
s = filecmp.cmp("qin.txt", "jian.txt")
print(s) 

运行结果如下:

如果俩文件相同则返回True , 如果不同则返回False

    filecmp.cmpfiles(dir1, dir2, common[, shallow]):

比较两个文件夹内指定文件是否相等。参数dir1, dir2指定要比较的文件夹,参数common指定要比较的文件名列表。函数返回包含3个list元素的元组,分别表示匹配、不匹配以及错误的文件列表。错误的文件指的是不存在的文件,或文件被琐定不可读,或没权限读文件,或者由于其他原因访问不了该文件。

import filecmp
match,mismatch,errors = filecmp.cmpfiles("qin", "fu",['a.txt','b.txt'])
print("%s\n%s\n%s"%(match,mismatch,errors)) 

运行结果如下:

['a.txt'] -- 表示两个文件都有该文件,并且完全匹配
['b.txt'] -- 表示两个文件都有该文件,但是不匹配
[]          -- 表示没有错误的文件

filecmp模块中定义了一个dircmp类,用于比较文件夹,通过该类比较两个文件夹,可以获取一些详细的比较结果(如只在A文件夹存在的文件列表),并支持子文件夹的递归比较。

dircmp提供了三个方法用于报告比较的结果:

report():只比较指定文件夹中的内容(文件与文件夹)report_partial_closure():比较文件夹及第一级子文件夹的内容report_full_closure():递归比较所有的文件夹的内容

例子:在文件夹"qin"中含有文件"a.txt", 在文件夹"fu"中含有文件"a.txt"和"b.txt",其两个文件夹下面的文件"a.txt"内容一样,

<span style="font-size: 12px;">import filecmp
x = filecmp.dircmp("qin","fu")
diff = x.report()
print(diff)</span> 

输出结果如下:

diff qin fu  
Only in fu: ["b.txt"] 
Identical files: ["qin.txt"]

如果两个文件夹下面的文件"a.txt"内容不相同那么结果如下:

输出结果如下:

diff qin fu 
Only in fu: ["b.txt"] 
Differing files: ["a.txt"]

dircmp还提供了下面这些属性用于获取比较的详细结果:

•left_list:左边文件夹中的文件与文件夹列表;
•right_list:右边文件夹中的文件与文件夹列表;
•common:两边文件夹中都存在的文件或文件夹;
•left_only:只在左边文件夹中存在的文件或文件夹;
•right_only:只在右边文件夹中存在的文件或文件夹;
•common_dirs:两边文件夹都存在的子文件夹;
•common_files:两边文件夹都存在的子文件;
•common_funny:两边文件夹都存在的子文件夹;
•same_files:匹配的文件;
•diff_files:不匹配的文件;
•funny_files:两边文件夹中都存在,但无法比较的文件;
•subdirs:我没看明白这个属性的意思,python手册中的解释如下:A dictionary mapping names in common_dirs to dircmp objects

总结

以上所述是小编给大家介绍的通过Python模块filecmp 对文件比较的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Python实现比较两个文件夹中代码变化的方法

    本文实例讲述了Python实现比较两个文件夹中代码变化的方法.分享给大家供大家参考.具体如下: 这里将修改代码后的目录与原始目录做对比,罗列出新增的代码文件,以及修改过的代码文件 # -*- coding: utf-8 -*- import os; folderA = "F:\\Projects\\FreeImageV3_14_1\\".lower(); folderB = u"E:\\Software\\图像解码库\\FreeImage3141\\FreeImage\\&q

  • Python实现配置文件备份的方法

    本文实例讲述了Python实现配置文件备份的方法.分享给大家供大家参考.具体如下: 这里平台为Linux: #!/usr/bin/python #Author:gdlinjianying@qq.com import os import time source = ['/etc/sysconfig/network-scripts', '/etc/sysconfig/network', '/etc/resolv.conf'] target_dir = '/opt/' target = target_

  • python实现比较文件内容异同

    本文实例为大家分享了python实现比较文件内容异同的具体代码,供大家参考,具体内容如下 import sys import difflib import time import os """ 创作时间:2017-10-08 23:30 09 版本: 1.0.0 """ def main(): """主函数""" try: f1 = sys.argv[1]#获取文件名 f2 = sys.

  • Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法

    本文实例讲述了Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法.分享给大家供大家参考.具体如下: 这个东东本来是做来给公司数据同步用的:新服务器还没正式启用,旧的服务器还在使用,每天都有大量图片传到旧服务器上面,为了避免备份全部图片,所以写了这么个工具. 1. 运行效果如下图所示: 2. Python代码如下: 复制代码 代码如下: # coding=gbk ''' Created on 2011-1-7 @author: HH ''' import os,ConfigParse

  • python实现备份目录的方法

    本文实例讲述了python实现备份目录的方法.分享给大家供大家参考.具体如下: 备份脚本1: #!/usr/bin/python # Filename: backup_ver1.py import os import time # 1. The files and directories to be backed up are specified in a list. source = ['/home/swaroop/byte', '/home/swaroop/bin'] # If you ar

  • Python实现备份文件实例

    本文实例讲述了Python实现备份文件的方法,是一个非常实用的技巧.分享给大家供大家参考.具体方法如下: 该实例主要实现读取一个任务文件, 根据指定的任务参数自动备份. 任务文件的格式: (注意,分号后面注释是不支持的) [task] ; 一项任务开始 dir=h:/Project ; 指定备份的目录 recusive=1 ; 是否递归子目录 suffix=h|cpp|hpp|c|user|filters|vcxproj|sln|css|gif|html|bmp|png|lib|dsw|dsp|

  • Python备份目录及目录下的全部内容的实现方法

    本来是想写一个东西可以直接调用TortoiseSVN保存当前代码到一个分枝下的. 可惜调用SVN的部分还在研究.就先写了目录拷贝的部分. 如果有喜欢研究Python的童鞋愿意提供想法或者建议的话, 这里先谢谢了. :) 就目录拷贝的部分,思想很简单.读配置文件中的配置信息. 生成一个项目名称加日期时间组成的文件夹名为分枝名称.把当前项目下的全部内容 拷贝到这个目录下. 然后要做的研究就是调用TortoiseSVN命令嵌入这部分代码. 现在看代码: 1. 读取配置文件 配置文件很简单.用的就是tx

  • Python实现定期检查源目录与备份目录的差异并进行备份功能示例

    本文实例讲述了Python实现定期检查源目录与备份目录的差异并进行备份功能.分享给大家供大家参考,具体如下: 在项目中,经常要更新文件,在更新之前首先要备份源文件,所以就用到了这个脚本(来自于Python自动化运维这本书),总共有以下几个步骤: 1. 获取要进行比较的两个目录,进行差异比较,把源目录特有的文件或目录.以及和备份目录不同的文件或目录保存到列表中,并且判断目录下面是否还有目录,递归进行保存这些差异文件. 2. 将差异文件列表中文件或目录的路径换成对应的备份路径,进行判断,如果备份路径

  • Python 比较文本相似性的方法(difflib,Levenshtein)

    最近工作需要用到序列匹配,检测相似性,不过有点复杂的是输入长度是不固定的,举例为: input_and_output = [1, 2, '你好', 世界', 12.34, 45.6, -21, '中国', '美丽'] 其中,需要从input_and_output 中选取不固定长度的一段作为输入,且顺序不定,然后去与总体进行比较,找出最符合的,开始是对汉字进行数值化编码,不过后来由于出现汉字越来越多,遂放弃该方法,转向别的方式,查找资料发现了两个python包广被推荐,从下面来看各有优缺点,记录之

  • 用python标准库difflib比较两份文件的异同详解

    [需求背景] 有时候我们要对比两份配置文件是不是一样,或者比较两个文本是否异样,可以使用linux命令行工具diff a_file b_file,但是输出的结果读起来不是很友好.这时候使用python的标准库difflib就能满足我们的需求. 下面这个脚本使用了difflib和argparse,argparse用于解析我们给此脚本传入的两个参数(即两份待比较的文件),由difflib执行比较,比较的结果放到了一个html里面,只要找个浏览器打开此html文件,就能直观地看到比较结果,两份文件有差

随机推荐