【Python21】文件内容差异对比(difflib模块)_sdsnzy_9的博客-程序员秘密

技术标签: python  difflib  Python  

一、difflib简介


difflib 为 python 的标准库模块,无需安装。用于对比文本之间的差异。并且支持输出可读性比较强的HTML文档,类似Linux系统的diff 命令。

应用场景: 代码和配置文件差异对比。

  • HtmlDiff 类的 make_file 方法可以生成美观的HTML文档。

二、文件内容对比差异


代码:

import difflib
def diff(f1, f2):
    # 自动打开文件file1与file2
    with open(f1) as f1:
        content1 = f1.readlines()
    with open(f2) as f2:
        content2 = f2.readlines()
    # 实例化
    df = difflib.HtmlDiff()
    return df.make_file(content1, content2)
if __name__ == '__main__':
    f1 = 'doc/file1.txt'
    f2 = 'doc/file2.txt'
    # 差异
    res = diff(f1, f2)
    # 以写方式打开差异存放的html文件
    fo = open('doc/diff_file.html', "w")
    fo.write(res)  # 写入
    fo.close()  # 关闭

源文档:

# doc/file1.txt
1234
5678
1234
# doc/file2.txt

浏览器打开结果展示:

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46069582/article/details/114778760

智能推荐

【MySQL】记一次线上重大事故:二狗子竟然把线上数据库删了!!_冰 河的博客-程序员秘密

写在前面估计二狗子这几天是大姨夫来了,心情很郁闷,情绪也很低落,工作的时候也有点心不在焉。让他发个版本,结果,一行命令下去把线上的数据库删了!你没听错:是删掉了线上的数据库!运营那边顿时炸了锅:怎么回事?系统不能访问了!什么情况啊?!很多客户都在投诉了!!尽管运营那边慌慌张张的不知所措,但是,我们作为技术人员还是要淡定,不就是删了数据库吗?没事,哥帮你搞定!如果文章对你有点帮助,请微信搜索并关注 冰河技术 微信公众号,点赞、在看、留言和转发,你的支持是我持续创作的最大动力!!事件背景My

【程序员内功】Java设计模式并不难(一)---工厂模式_Yancy_chan的博客-程序员秘密

Factory Pattern1、缘起Sunny需开发一套图表库,图表可以根据系统的不同提供不同的外观,于是便有了下面的代码,根据入参type的不同,我们可以构造不同的Chart对象。乍一看代码没有问题,但仔细一想这样书写代码可能会带来哪些不变呢?首先最明显的就是使用了大量的if-else语句,不仅执行效率低,而且不利于阅读、修改。Chart类的职责过重,既需要关注对象的创建初始化,还...

通过vue-cli或webpack-cli搭建的vue项目使用amfe-flexible进行rem适配_黑色的糖果的博客-程序员秘密

前言:目前大多是通过vue-cli来搭建项目,但早前也有使用webpack-cli搭建项目,两者会在文件的目录上有些区别,整体的结构和原理是一样的。此处会分别进行介绍。一、通过vue-cli搭建项目1.安装依赖npm install amfe-flexible –savenpm install [email protected] –save(尝试过下载最新版本的postcss-pxtorem报错)2.在main.js或index.js中引入import 'amfe-flexible'

ES6专题——整理自阮一峰老师的ECMAScript 6入门_理智lili的博客-程序员秘密

这里我仅仅是记录了那些我认为值得注意的ES6知识点,详细版请挪步https://es6.ruanyifeng.com/#docs/letlet和const命令let声明的变量只在它所在的代码块有效。var a = [];for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); };...

CentOS 6.7 Linux系统下 安装redis3.0.7_金玉良缘2017的博客-程序员秘密

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或

随便推点

tensorflow基础知识整理_子涣_new的博客-程序员秘密

基础知识tensor 张量插入UML图插入Mermaid流程图插入Flowchart流程图tensor 张量tensor是tensorflow中的基础变量,可以想象成一个结构体,由三个部分构成:tensor类型阶形状插入UML图张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间,文字太长了不适合放在一行.打量着王五...很好... 王五...

superset集成xspreadsheet_react xspreadsheet_假装程序员的第XXX天的博客-程序员秘密

文章目录集成x-spreadsheet准备工作后端前端1. 在superset-frontend/src/visualizations/ 目录下2、 修改 superset-frontend/src/visualizations/presets/MainPreset.js3、 修改 superset-frontend/src/explore/components/controls/VizTypeControl.jsx4、新增 superset-frontend/src/explore/controlPan

React-Native Realm 基础用法总结_realm react用法_barnett_y的博客-程序员秘密

一、环境配置 1、创建一个ReactNative项目(RealmDemo)react-native init RealmDemo12、切换目录cd RealmDemo13、添加realm依赖库npm install --save realm14、关联realm库rnpm link realm1注意: 如果关联失败,出现如下错误:rnpm-

01.深度学习笔记---实践与应用60讲(各领域的应用,CTR,深度学习几大经典模型)_ctr任务_柒夏码农之路的博客-程序员秘密

1.1 深度学习在各个领域的应用目前较为热门的GAN(生成式对抗网络)1.2 CTR任务一、当深度学习遇到CTR预估CTR任务:给定一个商品,给定一个环境,用户购买此商品的概率。应用范围较广。例如有如下场景。比如:输入一部电影,预测会打几分(右边的1,2,3,4,5代表预测分值)蓝色框:用户橙色框:电影黄色框:用户过去看过那些电影,大国那些分数绿色框:时间酒红框:相关特征CTR任务特点:大量离散特征 大量高维度稀疏特征 特征工程:特征组合对于.

android app排行榜 易观智库,易观发布4月移动App月活增幅排行榜_weixin_39905500的博客-程序员秘密

易观发布4月最新统计报告,在2018年4月移动App月活增幅TOP20排行榜中,短视频、家庭消费平台、网约车市场迎来新一波的增幅。其中,抖音增幅持续领跑短视频领域;家庭消费平台贝贝网保持月活跃用户连续高增长;网约车大战持续升级……4月的中国移动互联网竞争更加激烈。“流量战斗机”短视频增幅抢眼现如今,短视频领域如日中天,榜单中仅短视频领域就有三个平台上榜:抖音、好看视频、波波视频,抖音更是位列第二。...

黑马程序员—C语言—指针理解总结_Codreamer的博客-程序员秘密

————————Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———————指针指针是C语言中的重点也是难点。C语言的灵活就灵活在此,接下来我们来探讨一下指针的用法。一、指针基本知识1.指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。指针的基本格式:变量类型 *变量名;int *p;定义了一个指针变量p。2.下

推荐文章

热门文章

相关标签