Python自动化运维_文件内容差异对比分析
时间:2019-04-11
本文章向大家介绍Python自动化运维_文件内容差异对比分析,主要包括Python自动化运维_文件内容差异对比分析使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
模块: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自动化运维_文件内容差异对比分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Centos7创建LVM及扩容
- python3 使用session模拟post实现修改活码内容
- linux LVM逻辑卷的创建,扩容,缩减和删除
- shell脚本中各种括号的区别以及用法
- linux 实现centos7在线升级最新版本内核
- linux centos系统开机启动流程
- mysql的备份及恢复
- linux之iptables 基础详解
- linux 实现lvs-dr在不同网段的负载均衡调度
- docker实现Mongodb复制集
- Centos7搭建LAMP+Typecho个人博客
- [Centos7]搭建postfix邮件服务器
- [Docker]手动配置docker网络
- [Centos7]使用GPG加密和解密文件
- [Centos7]设置禁ping