• 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('
    '.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格式的结果
    

      

  • 相关阅读:
    散列
    AVL树的单旋与双旋
    Ubuntu系统目录
    os x文件系统结构简介
    c语言静态局部变量
    创建J2EE 5.0工程后,JSTL不能使用解决方法
    mysql
    指针
    servlet 访问项目
    c数组
  • 原文地址:https://www.cnblogs.com/Infi-chu/p/8030188.html
Copyright © 2020-2023  润新知