python使用difflib对比文件示例

使用difflib模块对比文件内容

1  示例:字符串差异对比

vim duibi.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
import os
import difflib
tex1="""tex1:
this is a test for difflib ,just try to get difference of the log
现在试试功能是否可行 好呀
goodtest
那么试试吧好人
"""
tex1_lines=tex1.splitlines()
tex2="""tex2:
this is a test for difflib ,just try to get difference of the log
现在试试功能是否可行
goodtast
那么试试吧
"""
tex2_lines=tex2.splitlines()
#---------原始对比方法----------
#d=difflib.Differ()
#diff=d.compare(tex1_lines,tex2_lines)
#print '\n'.join(list(diff))

#--------html对比方法----------
#并修改diff.html的编码,将ISO-8859-1改为UTF-8格式解析文件,用于对比中文
d=difflib.HtmlDiff()
q=d.make_file(tex1_lines,tex2_lines)
old_str='charset=ISO-8859-1'
new_str='charset=UTF-8'
with open('diff.html','w') as f_new:
	f_new.write(q.replace(old_str,new_str))

#############################
#d=difflib.HtmlDiff()
#q=d.make_file(tex1_lines,tex2_lines)
#old_str='charset=ISO-8859-1'
#new_str='charset=UTF-8'
#data=q.replace(old_str,new_str)
#fo=open('diff.html','w')
#fo.write(data)
#fo.close()
############################

运行 python duibi.py  生产diff.html

浏览器打开diff.html  查看对比结果。

2 示例 文件对比  文件差异对比代码 可直接使用 无需修改(包括中文)

用下面脚本对比  testfile1 testfile2 的差异

vim diff.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
import difflib

try:
	tfile1=sys.argv[1]
	tfile2=sys.argv[2]
except Exception,e:
	print "错误:"+str(e)
	print "请准确输入参数,例如:python diff.py file1 file2"
	sys.exit()
def readfile(filename):
	try:
		fileHandle=open(filename,'rb')
		lines=fileHandle.read().splitlines()
		fileHandle.close()
		return lines
	except IOError as error:
		print('读取文件错误:'+str(error))
		sys.exit()
if tfile1=="" or tfile2=="":
	print "请准确输入参数,例如:python diff.py file1 file2"
	sys.exit()

tfile1_lines=readfile(tfile1)
tfile2_lines=readfile(tfile2)

#d=difflib.HtmlDiff()
#print s.make_file(tfile1_lines,tfile2_lines)

#为了生成html能识别中文,可用下面代码 #修改diff.html的编码,将ISO-8859-1改为UTF-8
#====================================
#方法1:
#d=difflib.HtmlDiff()
#q=d.make_file(tfile1_lines,tfile2_lines)
#old_str='charset=ISO-8859-1'
#new_str='charset=UTF-8'
#data=q.replace(old_str,new_str)
#fo=open('diff.html','w')
#fo.write(data)
#fo.close()
#====================================
#方法2:
#d=difflib.HtmlDiff()
#q=d.make_file(tfile1_lines,tfile2_lines)
#old_str='charset=ISO-8859-1'
#new_str='charset=UTF-8'
#fo=open('diff.html','w')
#fo.write(q)
#fo.close()
#with open('diff.html','r') as f:
#        lines=f.readlines()
#with open('diff.html','w') as f_new:
#        for line in lines:
#                f_new.write(line.replace(old_str,new_str))
#=====================================
#方法3:
old_str='charset=ISO-8859-1'
new_str='charset=UTF-8'
d=difflib.HtmlDiff()
q=d.make_file(tfile1_lines,tfile2_lines)
with open('diff.html','w') as f_new:
	f_new.write(q.replace(old_str,new_str))

执行python diff.py testfile1 testfile2

生成diff.html

浏览器查看文件对比结果

原文地址:http://blog.51cto.com/superleedo/2114885

时间: 2024-08-25 09:20:09

python使用difflib对比文件示例的相关文章

Python使用difflib模块比较两个文件内容异同,同时输出html易浏览

因工作需求,需要对比连个文件异同,并输出html格式来对比. #!/usr/bin/python # -*- coding: utf-8 -*- import sys import difflib def read_file(filename): try: with open(filename, 'r') as f: return f.readlines() except IOError: print("ERROR: 没有找到文件:%s或读取文件失败!" % filename) sys

Python登录模块Demo示例

Python登录模块Demo示例: #!/usr/bin/env python # This content comes from alex. while True:     NAME = raw_input("Please input your name:\n")     if NAME == 'alex':         P = '123'         PASSWD = raw_input("Please input your password:\n")

python中的tcp示例详解

python中的tcp示例详解  目录 TCP简介 TCP介绍 TCP特点 TCP与UDP的不同点 udp通信模型 tcp客户端 tcp服务器 tcp注意点 TCP简介 TCP介绍 TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义. TCP通信需要经过创建连接.数据传送.终止连接三个步骤. TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发

Python 之 Difflib

2017年7月8日 word文档地址:https://wenku.baidu.com/view/36692440854769eae009581b6bd97f192379bf57 参考书籍:<Python自动化运维 --技术与最佳实践> 作者:李天斯 1.什么是difflib Difflib作为python的标准库,无需安装,作用是对比文本之间的差异,而且支持输出可读性比较强的HTML文档,与Linux下的vimdiff命令类似,我们可以比对文本.配置文件之间的差异,在版本控制方面非常有用. 2

RedisCluster 的 Java 和 Python 客户端 API 使用示例

这里的环境仍然采用 [Redis Cluster 的安装与配置] 中最终的集群配置环境,具体如下: 127.0.0.1:7000> cluster nodes 8868592d98d84b7cf5752cc0b97af4ac807d1a12 127.0.0.1:7007 slave bfc910f924d772fe03d9fe6a19aabd73d5730d26 0 1410882113063 8 connected f5bdda1518cd3826100a30f5953ed82a5861ed4

python 爬虫urllib基础示例

环境使用python3.5.2  urllib3-1.22 下载安装 wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz tar -zxf Python-3.5.2.tgz cd Python-3.5.2/ ./configure --prefix=/usr/local/python make && make install mv /usr/bin/python /usr/bin/python275 ln -s /us

Python tesserocr模块使用示例

操作系统:Win10 1709  X64 python版本:3.6.5 依赖模块:PIL.tesserocr. 需要说明的是,在windows系统上PowerShell通过PIP3 install tesserocr安装验证码识别模块时,需要先安装Tesseract (一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎,与Microsoft Office Document Imaging(MODI)相比,我们可以

python中difflib内置模块之文本对比

什么是difflib? 用来做什么?difflib为python的标准库模块,无需安装.作用时对比文本之间的差异.并且支持输出可读性比较强的HTML文档,与Linux下的diff 命令相似.在版本控制方面非常有用. 符号理解符号 含义'-' 包含在第一个系列行中,但不包含第二个.'+' 包含在第二个系列行中,但不包含第一个.' ' 两个系列行一致'?' 存在增量差异'^' 存在差异字符 import difflib text1 = ''' 1. Beautiful is better than

python 3 while 循环示例

示例一: AGE = 20 count = 0 while True:     if count == 5:         break     GUESS = int(input("AGE:"))     if GUESS == AGE :         print("It is right!")         break     elif GUESS > AGE :         print("It is bigger!")