一、概要:

Python2 官方文档:https://docs.python.org/2/library/difflib.html

Python2 官方文档:https://docs.python.org/3/library/difflib.html

  当我们维护多个Nginx配置时,时常会对比不同版本配置文件的差异,是运维人员更佳清晰地了解不同版本迭代后的更新项,实现的思路读取两个需要对比的配置文件,再以换行符作为分隔符,调用difflib.HtmlDIff()生成HTML格式的差异文档。

二、代码实现

实现代码如下:

#!/usr/bin/env python

import difflib
import sys try:
textfile1=sys.argv[] #第一个配置文件路径参数
textfile2=sys.argv[] #第二个配置文件路径参数
except Exception as e:
print('Error:' +str(e))
print("Usage: simple3.py filename1 filename2")
sys.exit() def readfile(filename): #文件读取分割函数
try:
fileHandle = open(filename,'rt')
text = fileHandle.read().splitlines() #读取后以行进行分隔
fileHandle.close()
return text
except IOError as error:
print('Read file Error:'+ str(error))
sys.exit() if textfile1 == "" or textfile2=="":
print("Usage: simple3.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格式的对比结果

三、运行代码结果如下

[root@localhost diff_lib]# python3 simple3.py nginx.conf.v1 nginx.conf.v2 > diff2.html

生成html页面diff2.html

下图为:nginx.conf.v1与nginx.conf.v2配置文件对比结果

最新文章

  1. 安卓开发基础之tween动画基本使用,代码教学
  2. wk_02
  3. ADB连不上,ADB server didn't ACK问题,的解决
  4. viewPager的基本使用
  5. NOIP 2002过河卒 Label:dp
  6. jquery json 操作(转)
  7. 学习linux与wp8.1——启航
  8. row_number()over(order by id) SQL顺序排列
  9. javaweb学习总结十三(dom4j方式对XML文档进行解析以及Xpath的使用)
  10. Websocket协议之php实现
  11. Oracle免费的便捷Web应用开发框架
  12. 免费MD5解密网站,轻松破解md5密码,mysql5/mysql323,ntlm,salt密码
  13. String中的两种实例化方式的区别
  14. 2015 多校联赛 ——HDU5334(构造)
  15. 深入解析 H.265 编码模式,带你了解Apple全面推进H.265的原因
  16. 关于如何使用xposed来hook某支付软件
  17. Nginx 出现 _STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/
  18. 使用POST请求实现页面的跳转
  19. Java 状态模式
  20. [LeetCode] 236. Lowest Common Ancestor of a Binary Tree_ Medium tag: DFS, Divide and conquer

热门文章

  1. git还原某个特定的文件到之前的版本
  2. 【备忘录】Sublime Text编辑器如何在选中的多行行首增加字符串
  3. laravel里面使用event
  4. 数据结构与算法JavaScript描述——栈
  5. Sqoop修改sqoop元信息实现job的增量导入
  6. GIL线程与进程选择
  7. Android屏幕相关概念和适配方法
  8. 完美解决 开机无法启动 提示0xc000000e
  9. leetcode747
  10. node / npm 配置问题