python---difflib
文件内容差异对比
difflib为python的标准库模块,无需安装。作用时对比文本之间的差异。并且支持输出可读性比较强的HTML文档,与LInux下的diff 命令相似。在版本控制方面非常有用。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: 小祎 import difflib
text1 = """ #定义字符串1
user www www;
worker_processes 2; error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; pid logs/nginx.pid; events {
use epoll;
worker_connections 2048;
} http {
include mime.types;
default_type application/octet-stream; server {
listen 80;
server_name itoatest.example.com;
root /apps/oaapp; charset utf-8;
access_log logs/host.access.log main; """
text1_lines = text1.splitlines() #以行进行分割 text2 = """ #定义字符串2
user www www;
worker_processes 2; error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; pid logs/nginx.pid; events {
use epoll;
worker_connections 2000;
} http {
include mime.types;
default_type application/octet-stream; server {
listen 80;
server_name itoatest.example.com;
root /apps/oaapp; charset utf-8;
access_log logs/host.access.log main; """
text2_lines = text2.splitlines() d = difflib.Differ()#创建Differ对象
diff = d.compare(text1_lines,text2_lines)
print('\n'.join(list(diff)))
| 符号 | 含义 |
| '-' | 包含在第一个系列行中,但不包含第二个。 |
| '+' | 包含在第二个系列行中,但不包含第一个。 |
| ' ' | 两个系列行一致 |
| '?' | 存在增量差异 |
| '^' | 存在差异字符 |
生成对比HTML格式 文档
使用HtmlDiff()类的make_file()方法生成HTML文档
#对上面代码修改 # d = difflib.Differ()#创建Differ对象
# diff = d.compare(text1_lines,text2_lines)
# print('\n'.join(list(diff))) d = difflib.HtmlDiff()
print(d.make_file(text1_lines,text2_lines))
python xxx.py > diff.html

对比Nginx配置文件差异脚本
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
#Author: guhf import difflib
import string
import sys try:
textfile1 = sys.argv[1]
textfile2 = sys.argv[2]
except Exception:
print("Error:" + str(e))
print("Usage: xxxx.py filename1 filename2")
sys.exit()
def readfile(filename):
try:
fileHandle = open(filename,'r')
text = fileHandle.read().splitlines()
fileHandle.close()
return text
except IOError as error:
print('Read file Error:' + str(error))
sys.exit() if textfile1 == "" or textfile2 == "":
print("Usage:test.py filename1 filename2")
sys.exit() text1_lines = readfile(textfile1)
text2_lines = readfile(textfile2) d = difflib.HtmlDiff()
print(d.make_file(text1_lines,text2_lines))
python---difflib的更多相关文章
- python difflib详解
difflib -帮助进行差异化比较 这个模块提供的类和方法用来进行差异化比较,它能够生成文本或者html格式的差异化比较结果,如果需要比较目录的不同,可以使用filecmp模块. class dif ...
- python difflib.md
difflib 此模块提供了用于比较序列的类和函数.它可以用于例如比较文件,并且可以产生各种格式的差异信息,包括HTML和上下文以及统一差异. difflib 模块包含用于计算和处理序列间差异的工具. ...
- Python 之 Difflib
Python 之 Difflib 2017年7月8日 word文档地址:https://wenku.baidu.com/view/36692440854769eae009581b6bd97f19237 ...
- 【Python】 文件目录比较工具filecmp和difflib
在一些运维场景中,常常需要比较两个环境中的应用目录结构(是否有文件/目录层面上的增删)以及比较两个环境中同名文件内容的不同(即文件层面上的改).Python自带了两个内建模块可以很好地完成这个工作,f ...
- 使用Python自带difflib模块进行文件内容差异对比
difflib_text.py #!/usr/bin/python import difflib import sys try: textfile1=sys.argv[1] textfile2=sys ...
- python运维开发常用模块(四)文件对比模块difflib
1.difflib介绍 difflib作为 Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持 输出可读性比较强的HTML文档,与Linux下的diff命令相似.我们可以 使用dif ...
- python利用difflib判断两个字符串的相似度
我们再工作中可能会遇到需要判断两个字符串有多少相似度的情况(比如抓取页面内容存入数据库,如果相似度大于70%则判定为同一片文章,则不录入数据库) 那这个时候,我们应该怎么判断呢? 不要着急,pytho ...
- difflib python
difflib -帮助进行差异化比较 这个模块提供的类和方法用来进行差异化比较,它能够生成文本或者html格式的差异化比较结果,如果需要比较目录的不同,可以使用filecmp模块. 例子: # -*- ...
- Python 资源大全中文版
Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python 资源列 ...
- ubuntu下安装python各类运维用模块(以后补充用途)
环境:ubuntu 16.04LTS,python3,python2 已安装:pip3,pip2 注:基于Python自动化运维这本书上介绍的各模块而来 1.python-rrdtool(just f ...
随机推荐
- Cisco ASA 配置案例---anyconnect拨通后所有流量从服务器端出去
一.目的: 1.Cisco ASA之Lan端能正常上网. 2.anyconnect端所有流量从Cisco ASA的Outside出去. 3.anyconnect端能访问Cisco ASA的Inside ...
- 【转】浅思OC的语言特性
算了算,学习IOS已经有一段时间了.今天花了点时间思考一下OC的语言特性,让自己的心不要那么浮躁,注重基础,回归本源. OC做为一门面向对象语言,自然具有面向对象的语言特性,如封装.继承.多态.他具有 ...
- linux磁盘存储命令 磁盘存储命令
硬盘空间是一个有限的资源, 硬盘空间是一个有限的资源,用户用下面的命令 可 以随时了解当前硬盘空间的使用情况. 以随时了解当前硬盘空间的使用情况. ? du,df命令 查看磁盘空间状况的操作 , ...
- Kerberos简介及常见问题
基本描述 Kerberos使用Needha-Schroeder协议作为它的基础.它使用了一个由两个独立的逻辑部分:认证服务器和票据授权服务器组成的"可信赖的第三方",术语称为密钥分 ...
- 3-Spark高级数据分析-第三章 音乐推荐和Audioscrobbler数据集
偏好是无法度量的. 相比其他的机器学习算法,推荐引擎的输出更直观,更容易理解. 接下来三章主要讲述Spark中主要的机器学习算法.其中一章围绕推荐引擎展开,主要介绍音乐推荐.在随后的章节中我们先介绍S ...
- js操作做GridView
一:获取当前选中行的数据 function fun_selectedInfo() { //获取当前鼠标选中元素 var e=event.srcElement; //获取当前元素所在行号 var row ...
- Jquery面试题
1.改变一个标签中的属性的值? 分为两种情况: 改变style中的css样式属性值: $("ID").css({color:red,font-size:30px....}); ...
- php部分---单文件上传的封装类
<?php $fileinfo=$_FILES["myfile"]; function uploadfile($fileinfo,$allowext=array('jpeg' ...
- UVa 10410树重建
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 统计一下ie的一些问题(什么时候遇到什么时候更新)
1.document.createElement问题 问题描述:在用ASP.NET的时候,通常我们需要注册脚本,通常是以这种形式发送到客户端: <script type="text/j ...