文件内容差异对比方法

一、两个字符串的对比

1、两个字符串的对比输出

#!/bin/env python

import difflib

text1 = """text1:

This module provides classes and functions for comparing sequences v7.5"""

text1_lines = text1.splitlines()

text2 = """text2:

This module provides classes and functions for comparing sequences v7.4"""

text2_lines = text2.splitlines()

d = difflib.Differ()

diff = d.compare(text1_lines,text2_lines)

print ‘\n‘.join(list(diff))

本示例采用Differ()类对两个字符串进行比较,另外difflib的sequenceMatcher()类支持任意类型序列的比较,HtmlDiff()类支持将比较结果输出为HTML格式,示例运行结果如图2-1所示

2、生成美观的对比HTML格式文档

采用HtmlDiff()类的make_file()方法就可以生成美观的HTML文档,对示例1中代码按以下进行修改:

d = difflib.Differ()

diff = d.compare(text1_lines,text2_lines)

print ‘\n‘.join(list(diff))

替换成:

d = difflib.HtmlDiff()

print d.make_file(text1_lines,text2_lines)

将新文件命名为diff2.py。运行#python diff2.py,再使用浏览器打开diff.html文件,结果如果2-2所示,HTML文档包括了行号、差异标志、图例等信息,可读性增强了许多。

二、两个文件的对比

shell # vi diff3.py

#!/bin/env python

import difflib

import sys

try:

textfile1=sys.argv[1]

textfile2=sys.argv[2]

except Exception,e:

print "Error:"+str(e)

print "Usage: diff2.py filename1 filename2"

sys.exit()

def readfile(filename):

try:

fileHandle = open(filename, ‘rb‘)

text = fileHandle.read().splitlines()

fileHandle.close()

return text

except IOError as error:

print (‘Read file Error:‘+str(error))

sys.exit()

if textfile1=="" or textfile2=="":

print "Usage:diff3.py filename1 finename2"

sys.exit()

text1_lines = readfile(textfile1)

text2_lines = readfile(textfile2)

d = difflib.HtmlDiff()

print d.make_file(text1_lines,text2_lines)

从图2-3中可以看出diff.py和diff2.py的差别

时间: 2024-11-10 07:56:52

文件内容差异对比方法的相关文章

Python自动化运维——文件内容差异对比

Infi-chu: http://www.cnblogs.com/Infi-chu/ 模块:difflib 安装:Python版本大于等于2.3系统自带 功能:对比文本之间的差异,而且支持输出可读性比较强的HTML文档,与Linux中的diff命令比较相似. 两个字符串的差异对比: #import difflib #text1=''' #hello world. #how are you. #nice to meet you. #''' #text1_lines=text1.splitlines

两个文件内容差异对比,

比较两个单行文件的方法就我知道的而言有4种 用diff 用grep 用comm 用uniq [[email protected] ~]# echo "`seq 5`" >file1;cat file1 1 2 3 4 5 [[email protected] ~]# echo "`seq 2 7`" >file2;cat file2 2 3 4 5 6 7 1.用diff -c file1多的是"-"file2多的是"+&q

difflib模块实现文件内容差异对比

[[email protected] difflib]# cat  diff.py #!/usr/bin/python import difflib text1 = raw_input("please input text1:") text1_lines = text1.splitlines() text2 =raw_input("please input text2:") text2_lines = text2.splitlines() d =difflib.Ht

python-文件内容差异对比

通过difflib模块实现文件内容差异对比,它是Python的标准库模块,不需要单独安装,作用是对比文件之间的差异.而且支持输出HTML文档,我们可以用difflib对比代码和配置文件的差别. 1.对比两个字符串的差别 打印一下运行结果: 理解一下输出的内容: "-"符号:包含在第一个序列中,但不包含在第二个序列中: "+"符号:包含在第二个序列中,但不包含在第一个序列中: ""(也就是空):两个序列行一致: "?"符号:表示

文件与目录差异对比方法

环境: Python 2.6.6 linux系统 用到的模块:filecmp filecmp提供了:单文件对比,多文件对比,目录对比 单文件对比:采用filecmp.cmp(f1,f2[,shallow])方法,比较文件名为f1和f2的文件的内容,相同返回True,不相同返回False,shallow默认是True,意思是只根据os.stat()方法返回的文件基本信息进行对比,比如最后访问时间.修改时间.状态改变时间等,会忽略文件内容的对比.当shallow为False时,则os.stat()与

php读取文件内容的多种方法示例代码

分享下php中读取文件内容的几种方法,各有千秋,与大家共勉. 示例代码1: 用file_get_contents 以get方式获取内容<?php$url='http://www.jbxue.com/';$html=file_get_contents($url);//print_r($http_response_header);ec($html);printhr();printarr($http_response_header);printhr();?> 示例代码2: 用fopen打开url,

Shell脚本实现乱序排列文件内容的多种方法(洗牌问题)

洗牌问题:洗一副扑克,有什么好办法?既能洗得均匀,又能洗得快?即相对于一个文件来说怎样高效率的实现乱序排列? ChinaUnix 确实是 Shell 高手云集的地方,只要你想得到的问题,到那里基本上都能找到答案.r2007给出了一个取巧的方法,利用 Shell 的 $RANDOM 变量给原文件的每一行加上随机的行号然后根据这个随机行号进行排序,再把临时加上去的行号给过滤掉,这样操作之后得到的新文件就相当于被随机“洗”了一次: while read i;do echo "$i $RANDOM&qu

MS SQL Server数据库两个库之间相同数据表名内容批量对比方法

上一篇"导出记录数量对比-软件测试方法(一)",主要介绍数据导出结果记录数量和原始正常好库的记录数量精确对比,测试软件导出少数据的相关bug.本文测试方法旨在更精确比对表记录内部数据差异,记录数量的对比只是恢复准确率的必要条件,而记录内部的字段数据内容是否一致,才是比较的终极目标. 一. 测试目的:在很多情况下,数据导出是以记录数量来衡量是否齐全.在某些情况下,数据记录数量导出是一致的,但,记录内部数据却出现差异,比如某些数字字段,一旦出现差异,其结果将带来不准确.本测试大纲目的是比对

php检测文件内容编码的方法

核心用到的是mb_convert_encoding函数,示例代码如下: <?php header("Content-type: text/html; charset=utf-8"); /** * 获取内容的编码 * @param string $str */ function get_encoding($str = "") { $encodings = array ( 'ASCII', 'UTF-8', 'GBK' ); foreach ( $encoding