Python自动化运维_文件内容差异对比分析
模块:difflib
安装:Python版本大于等于2.3系统自带
功能:对比文本之间的差异,而且支持输出可读性比较强的HTML文档,与Linux中的diff命令比较相似。
两个字符串的差异对比:
#importdifflib #text1=''' #helloworld. #howareyou. #nicetomeetyou. #''' #text1_lines=text1.splitlines()#以行进行分割,便于进行对比 #text2=''' #HelloWorld. #howareyou! #Nicetomeetyou~ #''' #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格式文档:
#importdifflib #text1=''' #helloworld. #howareyou. #nicetomeetyou. #''' #text1_lines=text1.splitlines()#以行进行分割,便于进行对比 #text2=''' #HelloWorld. #howareyou! #Nicetomeetyou~ #''' #text2_lines=text2.splitlines()#以行进行分割,便于进行对比 #d=difflib.HtmlDiff() #print(d.make_file(text1_lines,text2_lines)) #之后使生成的文件变为.html即可使用浏览器查看
对比配置文件差异:
#importdifflib #importos #try: #textfile1=sys.argv[1]#第1个配置文件路径参数 #textfile2=sys.argv[2]#第2个配置文件路径参数 #exceptException,e: #print('Error:'+str(e)) #print('使用:脚本名.pyfilename1filename2') #sys.exit() #defreadfile(filename):#文件读取分隔函数 #try: #fileHandle=open(filename,'rb') #text=fileHandle.read().splitlines()#读取后按行进行分隔 #fileHandle.close() #returntext #exceptIOErroraserror: #print('读取文件错误:'+str(error)) #sys.exit() #iftextfile1=='ortextfile2==': #print('使用:脚本名.pyfilename1filename2') #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自动化运维_文件内容差异对比分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。