文件內容差異對比方法

一、兩個字符串的對比

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所示

wKioL1lTdBSTVFraAADojG_Ghqk960.png-wh_50

 

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文檔包括了行號、差異標誌、圖例等信息,可讀性增強了許多。

wKiom1lTc0zCzIvgAACUrWb47c8001.png-wh_50

 

二、兩個文件的對比

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的差別

wKiom1lTc4OiIEZ1AAGQdhNMObk127.png-wh_50

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章