文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python使用difflib对比文件示

2023-01-31 06:50

关注

使用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  查看对比结果。

image.png

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

浏览器查看文件对比结果

image.png





阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯