ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

difflib模块详解

2021-12-20 13:01:48  阅读:199  来源: 互联网

标签:index lines difflib text2 text1 模块 html 详解


 

1、两个字符串对比

import difflib
text1=""" test1 #定义字符串
hellow
my name is machanwei!
difflib document v7.4
add str
"""
text1_lines=text1.splitlines() #以行进行分隔,以便进行对比
text2="""text2:   #定义字符串2
hellow
my name is machangwei!
difflib document v7.5
"""
text2_lines=text2.splitlines()
d=difflib.Differ()  #创建Differ()对象
diff=d.compare(text1_lines,text2_lines)    #采用compare方法对字符串进行比较
print('\n'.join(list(diff)))
对比程序

执行结果:

 

 - + 好像分别代表不同的文本,来区分文本用。这里-是1的,+是文本2的。?是有区别的地方,有区别的地方会标记箭头,只有-没有+,也就是不是成对出现应该是只有某一方有文本

 

2、对比文件生成html文档

执行生成html语句

(venv) D:\python_mcw>python python自动化运维书\difflib模块学习.py >>..\diffres.html

 

 

 挺好对比的

import difflib
text1=""" test1 #定义字符串
hellow
my name is machanwei!
difflib document v7.4
add str
"""
text1_lines=text1.splitlines() #以行进行分隔,以便进行对比
text2="""text2:   #定义字符串2
hellow
my name is machangwei!
difflib document v7.5
"""
text2_lines=text2.splitlines()

# #将下面的
# d=difflib.Differ()  #创建Differ()对象
# diff=d.compare(text1_lines,text2_lines)    #采用compare方法对字符串进行比较
# print('\n'.join(list(diff)))

#替换成下面这些:
d=difflib.HtmlDiff()
print(d.make_file(text1_lines,text2_lines))
上面的程序

3、对比文件差异

[root@hecs-358404 ~]# cat mcw.py 
# __*__ coding:utf-8 _*_
#!/usr/bin/env python
import difflib
import sys

try:
    mcwfile1=sys.argv[1]  #第一个配置文件路径参数
    mcwfile2=sys.argv[2] #第二个配置文件路径参数
except Exception as e:
    print("Error:"+str(e))
    print("Usage: mcw.py  mcwfile1 mcwfile2")
    sys.exit()

def readfile(filename): #文件读取分隔函数
    try:
        fileHandle=open(filename,'rb')
        text=fileHandle.read().splitlines()   #读取后以行进行分隔
        fileHandle.close()
        return text
    except IOError as error:
        print('Read file Error:'+str(error))
        sys.exit()
if mcwfile1=="" or mcwfile2=="":
    print("Usage: mcw.py  mcwfile1 mcwfile2")
    sys.exit()
text1_lines=readfile(mcwfile1) #调用函数,获取分隔后的字符串
text2_lines=readfile(mcwfile2)
d=difflib.HtmlDiff()
print d.make_file(text1_lines,text2_lines)
对比程序
server {

       listen       80;

       server_name  blog.etiantian.org;

       location / {

                root   html/blog;

                index  index.html index.htm;

          }

        location ~* .*\.(php|php5)?$ {

          root html/blog;

              fastcgi_pass  127.0.0.1:9000;

              fastcgi_index index.php;

              include fastcgi.conf;

          }

}
文件1
#server {

       listen       80;

            server_name  blog.etiantian.org;

       location / {

                root   html/blog;

                index  index.html index.htm;

          }

        machangwei
        location ~* .*\.(php|php5)?$ {

          root html/blog;

              fastcgi_pass  127.0.0.1:9000;

              fastcgi_index index.php;

              include fastcgi.conf;

          }
        fffffff
}
文件2

 

 对比结果如下:

 

 

 

参考书籍:自动化运维技术与最佳实践  刘天斯

 

标签:index,lines,difflib,text2,text1,模块,html,详解
来源: https://www.cnblogs.com/machangwei-8/p/15583728.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有