zoukankan      html  css  js  c++  java
  • 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格式的结果
    

      

  • 相关阅读:
    Activity与Fragment间的通信
    Activity生命周期.lanchMode.保存状态
    网络知识
    Android内存优化(使用SparseArray和ArrayMap代替HashMap)
    进程/线程死锁产生的原因以及如何避免死锁
    Android UI框架基本概念
    android在线源码
    y音频学习
    给 Android 开发者的 RxJava 详解
    设计模式之观察者模式
  • 原文地址:https://www.cnblogs.com/Infi-chu/p/8030188.html
Copyright © 2011-2022 走看看