Python自动化运维_文件内容差异对比分析


Posted in Python onDecember 13, 2017

模块:difflib

安装:Python版本大于等于2.3系统自带

功能:对比文本之间的差异,而且支持输出可读性比较强的HTML文档,与Linux中的diff命令比较相似。

两个字符串的差异对比:

#import difflib
 
#text1='''
 
#hello world.
 
#how are you.
 
#nice to meet you.
 
#'''
 
#text1_lines=text1.splitlines() # 以行进行分割,便于进行对比
 
#text2='''
 
#Hello World.
 
#how are you!
 
#Nice to meet you~
 
#'''
 
#text2_lines=text2.splitlines() # 以行进行分割,便于进行对比
 
#dif1=difflib.Differ() # 创建Differ() 对象
 
#diff1=dif1.compare(text1_lines,text2_lines) # 采用compare() 方法对字符串进行比较
 
#print('\n'.join(list(diff1)))

此外difflib 还有SequenceMatcher()类,此类支持任意类型序列的比较;还有HtmlDiff() 类,此类支持将比较结果以HTML格式输出。

符号含义说明:

符号

含义

'-'

包含在第一个序列行中,但不包含在第二个序列行

'+'

包含在第二个序列行中,但不包含在第一个序列行

' '

两个序列行一致

'?'

标志两个序列行存在增量差异

'^'

标志出两个序列行存在的差异字符

生成HTML格式文档:

#import difflib
#text1='''
 
#hello world.
 
#how are you.
 
#nice to meet you.
 
#'''
 
#text1_lines=text1.splitlines() # 以行进行分割,便于进行对比
 
#text2='''
 
#Hello World.
 
#how are you!
 
#Nice to meet you~
 
#'''
 
#text2_lines=text2.splitlines() # 以行进行分割,便于进行对比
 
#d=difflib.HtmlDiff()
 
#print(d.make_file(text1_lines,text2_lines))
 
# 之后使生成的文件变为 .html即可使用浏览器查看

对比配置文件差异:

#import difflib
 
#import os
 
#try:
 
# textfile1=sys.argv[1] # 第1个配置文件路径参数
 
# textfile2=sys.argv[2] # 第2个配置文件路径参数
 
#except Exception,e:
 
# print('Error:'+str(e))
 
# print('使用:脚本名.py filename1 filename2')
 
# sys.exit()
 
#def readfile(filename): # 文件读取分隔函数
 
# try:
 
# fileHandle=open(filename,'rb')
 
# text=fileHandle.read().splitlines() # 读取后按行进行分隔
 
# fileHandle.close()
 
# return text
 
# except IOError as error:
 
# print('读取文件错误:'+str(error))
 
# sys.exit()
 
#if textfile1=='or textfile2==':
 
# print('使用:脚本名.py filename1 filename2')
 
# sys.exit()
 
#text1_lines=readfile(textfile1) # 调用readfile获取分隔后的字符串
 
#text2_lines=readfile(textfile2)
 
#d=difflib.HtmlDiff() # 创建HtmlDiff() 类对象
 
#print(d.make_file(text1_lines,text2_lines)) # 通过make_file() 方法输出HTML格式的结果

以上这篇Python自动化运维_文件内容差异对比分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Pyramid Mako模板引入helper对象的步骤方法
Nov 27 Python
Python中的pprint折腾记
Jan 21 Python
详解Python中映射类型(字典)操作符的概念和使用
Aug 19 Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 Python
HTML中使用python屏蔽一些基本功能的方法
Jul 07 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
pycharm 在windows上编辑代码用linux执行配置的方法
Oct 27 Python
python 函数中的内置函数及用法详解
Jul 02 Python
python通过matplotlib生成复合饼图
Feb 06 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
python openCV自制绘画板
Oct 27 Python
Python中pass的作用与使用教程
Nov 13 Python
Python实现自动发送邮件功能
Mar 02 #Python
django站点管理详解
Dec 12 #Python
Django 生成登陆验证码代码分享
Dec 12 #Python
python+django加载静态网页模板解析
Dec 12 #Python
Django入门使用示例
Dec 12 #Python
django使用html模板减少代码代码解析
Dec 12 #Python
Python使用三种方法实现PCA算法
Dec 12 #Python
You might like
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
memcache命令启动参数中文解释
2014/01/13 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
PHP实现验证码校验功能
2017/11/16 PHP
常用简易JavaScript函数
2009/04/09 Javascript
jQuery对表单元素的取值和赋值操作代码
2011/05/19 Javascript
jquery ajax 局部刷新小案例
2014/02/08 Javascript
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
js实现拖拽效果
2015/02/12 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
JS求解三元一次方程组值的方法
2017/01/03 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
vue router2.0二级路由的简单使用
2017/07/05 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
python导入时小括号大作用
2017/01/10 Python
python处理数据,存进hive表的方法
2018/07/04 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
个人思想理论学习的自我鉴定
2013/11/30 职场文书
《花的勇气》教后反思
2014/02/12 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
介绍信范文大全
2015/05/07 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS
关于Python中*args和**kwargs的深入理解
2021/08/07 Python