Python自动化运维——文件内容差异对比
Infi-chu:
http://www.cnblogs.com/Infi-chu/
模块: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自动化运维——文件与目录差异对比
Infi-chu: http://www.cnblogs.com/Infi-chu/ 模块:filecmp 安装:Python版本大于等于2.3默认自带 功能:实现文件.目录.遍历子目录的差异 常用方 ...
- 文件内容差异对比-python
上次没精力时候,看了下python自动化运维,给print加了颜色,新鲜哒 今天来写写文件对比 step1:引入difflib库(无需安装,python自带) step2:将文件内容按行分割,spli ...
- Python自动化运维:技术与最佳实践 PDF高清完整版|网盘下载内附地址提取码|
内容简介: <Python自动化运维:技术与最佳实践>一书在中国运维领域将有“划时代”的重要意义:一方面,这是国内第一本从纵.深和实践角度探讨Python在运维领域应用的著作:一方面本书的 ...
- 《Python自动化运维之路》 业务服务监控(二)
文件内容差异对比方法 使用diffie模块实现文件内容差异对比.dmib作为 Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持输出可读性比较强的HTML文档,与 Linux下的di ...
- python自动化运维之CMDB篇-大米哥
python自动化运维之CMDB篇 视频地址:复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/1Oj_sglTi2P1CMjfMkYKwCQ ...
- Day1 老男孩python自动化运维课程学习笔记
2017年1月7日老男孩python自动化运维课程正式开课 第一天学习内容: 上午 1.python语言的基本介绍 python语言是一门解释型的语言,与1989年的圣诞节期间,吉多·范罗苏姆为了在阿 ...
- python自动化运维学习第一天--day1
学习python自动化运维第一天自己总结的作业 所使用到知识:json模块,用于数据转化sys.exit 用于中断循环退出程序字符串格式化.format字典.文件打开读写with open(file, ...
- Python自动化运维
一.DNS域名轮询业务监控 链接:https://www.cnblogs.com/baishuchao/articles/9128953.html 二.文件内容差异对比方法 链接:https://ww ...
- Python自动化运维 技术与最佳实践PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:7bl4 一.内容简介 <python自动化运维:技术与最佳实践>一书在中国运维领域将有"划时代"的重要意义:一方面,这是国内第一本从纵.深和实践角度探 ...
随机推荐
- Selenium2学习(五)-- SeleniumBuilder辅助定位元素
前言 福利来了,对于用火狐浏览器的小伙伴们,你还在为定位元素而烦恼嘛? 上古神器Selenium Builder来啦,哪里不会点哪里,妈妈再也不用担心我的定位元素问题啦!(但是也不是万能,基本上都能覆 ...
- WAKE-WIN10-SOFT-python配置
1,anaconda下载,安装 1,1 官网:https://www.continuum.io/downloads 下载:https://repo.continuum.io/archive/ win1 ...
- February 25 2017 Week 8 Saturday
Energy and persistence can conquer all things. 能量和毅力可以征服一切. I have the persistence, but it seems I a ...
- (转)每天一个linux命令(1):ls命令
ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linu ...
- { ($0, Resolver($0.box)) }(Promise<T>(.pending)):闭包的定义与执行合一
public class func pending() -> (promise: Promise<T>, resolver: Resolver<T>) { return ...
- CF666E 【Forensic Examination】
题目 每天一道\(SAM\)真是非常开心 一看就是广义\(SAM\)+线段树合并了 我们存好\(S\)串每一个前缀的终点,之后在\(parent\)树上倍增找到表示\(S[l,r]\)这个子串的节点, ...
- 2018.12.22 Spring学习02
Spring学习02 1.使用注解配置Spring 1.1 为主配置文件引入新的命名空间(约束) 添加约束文件xxx-xxx-context.xml 添加到主配置文件中 选择刚才的context.xm ...
- 2018.10.7 理解Hibernate的工作原理及其中的ORM详解
复习 hibernate框架 简介j及其搭建: hibernate是一个开源框架,它是对象关联关系映射的框架,它对JDBC做了轻量级的封装,而我们java程序员可以使用面向对象的思想来操纵数据库. 1 ...
- sublime3插件安装方法
sublime3插件安装方法:http://blog.csdn.net/u011627980/article/details/52171886
- Cesium.js学习第一天(设置材质)
var viewer = new Cesium.Viewer('cs'); var entity = viewer.entities.add({ position: Cesium.Cartesian3 ...