使用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 difflibtry: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 linesexcept 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

浏览器查看文件对比结果

转载于:https://blog.51cto.com/superleedo/2114885

python使用difflib对比文件示例相关推荐

  1. pythondifflib详解_python difflib模块示例讲解

    difflib模块提供的类和方法用来进行序列的差异化比较,它能够比对文件并生成差异结果文本或者html格式的差异化比较页面,如果需要比较目录的不同,可以使用filecmp模块. class diffl ...

  2. Python 开源库及示例代码

    Python 开源库及示例代码 更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) React 入门实战(干货) ...

  3. python元组(tuple)使用示例+常用方法+列表(list)和元组(tuple)的异同?

    python元组(tuple)使用示例+常用方法+列表(list)和元组(tuple)的异同? 元组(tuple) # 元组类似列表,元组里面的元素也是进行索引计算. # 列表里面的元素的值可以修改, ...

  4. python中typing.NamedTuple示例

    python中typing.NamedTuple示例 from typing import * # 导入依赖项 class Friend(NamedTuple): """ ...

  5. python开源项目及示例代码

    1 算法 1.1 字符串处理 re 正则表达式的标准库. StringIO / cStringIO 以读写文件的方式来操作字符串(有点类似于内存文件). cStringIO 是 C 语言实现的,提供高 ...

  6. python画图代码星星-Python中turtle作图示例

    在Python里,海龟不仅可以画简单的黑线,还可以用它画更复杂的几何图形,用不同的颜色,甚至还可以给形状填色. 一.从基本的正方形开始 引入turtle模块并创建Pen对象: >>> ...

  7. python项目实例代码-python开源项目及示例代码

    下面列出的各种 Python 库/模块/工具,如果名称带超链接,说明是第三方的:否则是 Python 语言内置的. 1 算法 1.1 字符串处理 re 正则表达式的标准库. StringIO / cS ...

  8. python的用途实例-python assert的用处示例详解

    使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...

  9. python如何更新包_python如何更新包 python更新包代码示例

    python如何更新包?本篇文章小编给大家分享一下python更新包代码示例,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Python安装新包,pip是 ...

最新文章

  1. HNU 2015暑期新队员训练赛2 H Blanket
  2. Java 策略模式和状态模式
  3. 马尔科夫过程与吉布斯采样
  4. 编译opencv错误解决:libavcodec.a(hevc_cabac.o): `ff_h264_cabac_tables' can not be used
  5. 毕设题目:Matlab图像增强
  6. 关于一段式、两段式、三段式状态机
  7. 多种矿石混合的抗干扰矿石对讲机
  8. 给txt格式的文档增加目录
  9. 路由器/交换机/服务器的分类
  10. 2020力扣杯团体赛
  11. 自学Java day18 jvav反射专题 从jvav到架构师
  12. Manjaro更换系统默认字体,主题
  13. 抖音SEO优化源码,企业号搜索排名系统,矩阵同步分发。
  14. 那一个国家买东西要用计算机,计算机技能学材习料.doc
  15. 测试数据准备之 CMD 命令:copy(指定尺寸图片1M放大成6M)
  16. C语言如何求n次方根
  17. 你唯一能控制的,是自己的脾气与努力!
  18. 对人工智能未来发展的思考
  19. 计算机一级第一章试题,计算机一级考试试题第一章模板.doc
  20. html无法复制粘贴,无法复制粘贴

热门文章

  1. Ubuntu14.04 64位上配置终端显示git分支名称
  2. 二维码QR Code简介及其解码实现(zxing-cpp)
  3. OpenCV中与matlab中相对应的函数
  4. valgrind概述及错误分析
  5. oracle web API,在Web API程序中使用Swagger做接口文档
  6. 计算机分级存储的特,一种分级存储的方法、系统、设备及介质技术方案
  7. java changelistener_ListChangeListener.Change
  8. python函数的基础知识_Python入门基础知识点(函数进阶)
  9. 不带头节点的链表有哪些缺点_23张图!万字详解「链表」,从小白到大佬!
  10. python类和对象课件_简单解释Python的类和对象