您现在的位置是:门户> 编程语言> Python

Python自动化运维_文件内容差异对比分析
2021-02-23 9人围观 0条评论
简介下面小编就为大家分享一篇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自动化运维_文件内容差异对比分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

分享:

文章评论

    • wxpython 学习笔记 第一天
    • python文本数据处理学习笔记详解