Python中的文件对比(difflib文件对比、Linux文件对比)
一、difflib文件对比
1、观察对比法
代码块:
text1 = ''' 1. Beautiful is better than ugly.2. Explicit is better than implicit.3. Simple is better than complex.4. Complex is better than complicated.'''.splitlines(keepends=False)
print(text1)text2 = ''' 1. Beautiful is better than ugly.3. Simple is better than complex.4. Complicated is better than complex.5. Flat is better than nested.'''.splitlines(keepends=True)print(text2)
程序及运行结果:
2、difflib文件对比
代码块:
import difflibtext1 = ''' 1. Beautiful is better than ugly.2. Explicit is better than implicit.3. Simple is better than complex.4. Complex is better than complicated.'''.splitlines(keepends=False)text2 = ''' 1. Beautiful is better than ugly.3. Simple is better than complex.4. Complicated is better than complex.5. Flat is better than nested.'''.splitlines(keepends=True)d = difflib.Differ()
print(''.join(d.compare(text1,text2)))
程序及运行结果:
3、difflib通过html输出的方式对比
代码块:
import difflibtext1 = ''' 1. Beautiful is better than ugly.2. Explicit is better than implicit.3. Simple is better than complex.4. Complex is better than complicated.'''.splitlines(keepends=False)text2 = ''' 1. Beautiful is better than ugly.3. Simple is better than complex.4. Complicated is better than complex.5. Flat is better than nested.'''.splitlines(keepends=True)d = difflib.HtmlDiff()
htmlContent = d.make_file(text1,text2)
print(htmlContent)
程序及运行结果:
4、通过网页方式展示其不同
代码块:
import difflibtext1 = ''' 1. Beautiful is better than ugly.2. Explicit is better than implicit.3. Simple is better than complex.4. Complex is better than complicated.'''.splitlines(keepends=False)text2 = ''' 1. Beautiful is better than ugly.3. Simple is better than complex.4. Complicated is better than complex.5. Flat is better than nested.'''.splitlines(keepends=True)d = difflib.HtmlDiff()
htmlContent = d.make_file(text1,text2)
with open('diff.html','w') as f:f.write(htmlContent)
程序及运行结果:
此时,左边会出现一个diff.html的文件,我们打开文件,如图所示:
接下来,点击任意一个浏览器,则会调转到文件对比的页面,如下所示:
二、Linux文件对比
1、对比/tmp/passwd和/tmp/passwd1的文件区别
代码块:
import difflibfilename1 = '/tmp/passwd'
filename2 = '/tmp/passwd1'with open(filename1) as f1,open(filename2) as f2:content1 = f1.read().splitlines(keepends=True)content2 = f2.read().splitlines(keepends=True)d = difflib.HtmlDiff()
htmlContent = d.make_file(content1,content2)with open('passwdDiff.html','w') as f:f.write(htmlContent)
程序及运行结果:
Python中的文件对比(difflib文件对比、Linux文件对比)相关推荐
- python中newfile是干嘛用的_python 文件操作方法
python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...
- python怎么安装打开文件不存在怎么办呢_如果文件不存在,Python中的open()不会创建文件...
16 个答案: 答案 0 :(得分:712) 您应该open使用w+模式: file = open('myfile.dat', 'w+') 答案 1 :(得分:112) 以下方法的优点是,即使在路上引 ...
- python中f点flush是什么函数_Python文件操作及内置函数flush原理解析
1.打开文件得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 示例文件 '你好呀' 我是于超 嗯 再见 文件操作基本流程 f=open('chenli',encoding='ut ...
- python中字典不自动排序/删除指定类型文件/执行可执行文件的返回值
1.python 字典的用法 from collections import OrderedDict dict =OrderedDict() dict['foo']=3 dcit['aol']=1 2 ...
- python中集合运算_Python—集合的操作、文件的操作
1.集合的操作 1.集合的操作 定义: 1.不同元素组成,自动去重 2.无序 3.集合中的元素必须是不可变类型 1.集合的定义: 1>>> s1 = set('abcd') #同s1 ...
- python中gettext文件格式_如何将gettext .mo文件转换为.po文件 - python
Improve this question 当.po文件不再可用时,有什么方法可以将.mo文件转换为.po文件源?我需要编辑.mo文件的内容,但没有.po文件.可能吗? 参考方案 msgunfmt [ ...
- python中的数据写入与添加数据写入文件(to_csv)
很多情况下,大家可能会遇到相同情况,就是现在有一些数据需要保存在某个文件里面,但是后续会不断更新添加新的数据,例如在爬虫的时候,一页一页爬取数据的时候,当然可以将所有页数据先合并到一起,再保存起来,但 ...
- Python中使用print,每次输出数据到文件时,记录当前输出时间,数据序号加一
在将数据写入文件时,有时需要将数据标号,每次记录时让标号递增.本文思路是新建一个用于标号数据的文本文件,每次运行程序时调用里面的数据,加一后再将数据写入文件. 具体代码如下: import time ...
- python中 .py .pyc .pyw .pyo .pyd各后缀文件区别
转载自:https://www.cnblogs.com/deadwood-2016/p/8143351.html .py 文件 以 .py 作扩展名的文件是 Python 源代码文件,由 python ...
- Linux中文件节点标志,6种Linux文件类型
众所周知,在Linux 中一切皆为文件,包括硬盘和显卡等.在 Linux 系统中,大部分的文件都是普通文件和目录文件.但是也有其他的文件类型,发挥着不同的作用.因此,理解Linux文件类型在许多方面都 ...
最新文章
- Pycharm开发环境设置与熟悉。
- ACE线程管理机制-并发控制
- 数据挖掘工具软件Weka学习教程
- html点击关闭代码,怎样开放和关闭html代码?
- 家里在一二线城市有很多套房是什么体验?答案太颠覆!
- 《成为顶级JAVA架构师的必备书籍》
- strstr不区分大小写_Excel find 函数竟然还能这么用!奖金梯次计算,连 if 都不需要...
- HDU 2814 斐波那契循环节 欧拉降幂
- 使用RegularExpressionValidator验证(转)
- IE8 默认以Web Standards模式显示网页 全面遵循Web标准
- protocol buffer安装及使用(非常详细)
- 手工清除severe.exe病毒
- Linux安装redis最详细的教程
- 四元数与欧拉角的相互转换
- 渗透测试工程师的Linux学习之路
- 搜索引擎和知识图谱那些事
- 关于树莓派DSI屏幕触摸不准的问题
- 关于MacBook蓝牙键盘鼠标耳机音响等设备各种的卡顿问题
- pku1905 Expanding Rods
- PHP脚本中的两种换行符的区别
热门文章
- 深度学习工作笔记002---曼哈顿距离_欧氏距离
- JAVA面试要点008---HashMap、Hashtable、ConcurrentHashMap的原理与区别_ConcurrentHashMap原理
- web开发 java如何连接数据库并取得数据,实现 增,删,改,查
- 嵌入式电路设计(电路仿真)
- 怎么切换java版本吗_Java切换JDK版本的方法及技巧
- ip受限 linux_从linux源码看epoll及epoll实战揭秘
- axure如何竖立文字_AXURE教程:中继器实现穿梭框功能
- ❤️DDOS攻击详解❤️——万物互联时代的巨大威胁!安全领域最棘手的问题之一
- 深入分析Nginx 502 Bad Gateway和Nginx 504 Gateway Time-out
- R 梯度提升算法①