文档章节

flask直观显示文本对比

实践哥
 实践哥
发布于 2016/11/01 18:27
字数 466
阅读 123
收藏 0

运维过程中,经常会对一些服务的配置文件进行修改,因此,用flask实现修改后的配置文件对比还是比较直观的。本文中介绍使用flask框架实现对文本文件的对比。

python使用difflib模块的HtmlDiff可以生成网页格式的对比,对比的结果还是比较好看的,截取其中部分对比的截图如下:

实现方法:

在flask的view上直接return对比的结果就行,view的代码如下:

#测试diff接口
@app.route('/test/diff', methods=['GET', 'POST'])
def test_diff():
    diffresult = modules.web_diff_file('/etc/ssh/sshd_config', '/etc/ssh/sshd_config.bak20161101')
    return diffresult

有时候对比出来可能会出现乱码现象,可使用

return diffresult, 200, {'Content-Type': 'text/html; charset=gbk'}

解决乱码问题。

 

使用的modules中的函数定义如下:

#读文件
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()
#对两个文件进行对比
def web_diff_file(file1, file2):
    text1_lines = readfile(file1)
    text2_lines = readfile(file2)
    d = difflib.HtmlDiff()
    return d.make_file(text1_lines, text2_lines)

对配置文件进行读取,然后直接使用python的difflib库的HtmlDiff方法即可在网页实现比较直观的对比结果,更新配置自动化的时候,可以在配置下发前进行对比。

实现完成对vim /etc/ssh/sshd_config.bak20161101进行编辑,修改些内容,就可以看出对比的效果了,如下:

 

最后附上本人的网络课堂地址,如有兴趣请点击: 实践哥

© 著作权归作者所有

实践哥
粉丝 68
博文 51
码字总数 35897
作品 0
杭州
运维
私信 提问
慕课网Flask高级编程实战-11.Python与Flask的结合应用

11.1 重置密码流程分析 重置密码主要流程如下: 其中,发送重置密码邮件后的流程如下: """Like :meth: but aborts with 404 if not found instead of returning None.""" rv = self.first(......

Meet相识_bfa5
2018/06/14
0
0
Flask入门 表单Flask-wtf form原生与Bootstrap渲染(七)

(1) 原生的表单 模板页面,form表单 在manage.py中 在manage.py中将路由函数合并 (2) Flask-wtf表单 说明 : 是一个用于表单处理,校验并提供csrf验证的功能的扩展库 安装 : 作用: Flask-wtf能保...

善良小郎君
2018/06/02
0
0
Flask框架 —— 从入门到精通

更新日期 :2016 - 2 - 26 有开源网友提醒,故为了可阅读性更新排版。 Hello World 作者背景 应用程序简介 要求 安装 Flask 在 Flask 中的 “Hello, World” 下一步? 模板 回顾 为什么我们需...

水果糖
2016/02/26
402
0
Python Web 部署: 使用 flask + gunicorn + supervisor + nginx

flask   python 的服务器框架 gunicorn   webservice,WSGI 的容器 supervisor   进程管理工具 nginx   一个高性能的 web 服务器 创建项目 先为应用创建一个路径 构建 Python 的虚拟环...

SSBun
2017/06/01
0
0
《Flask Web开发:基于Python的Web应用开发实战》.PDF

简介 本书不仅适合初级Web开发人员学习阅读,更是Python程序员用来学习高级Web开发技术的优秀参考书。 • 学习Flask应用的基本结构,编写示例应用; • 使用必备的组件,包括模板、数据库、W...

jackmk
2017/08/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JWT学习总结

官方 https://jwt.io 英文原版 https://www.ietf.org/rfc/rfc7519.txt 或 https://tools.ietf.org/html/rfc7519 中文翻译 https://www.jianshu.com/p/10f5161dd9df 1. 概述 JSON Web Token(......

冷基
48分钟前
3
0
AOP的学习(1)

AOP 理解AOP编程思想(面向方法、面向切面) spring AOP的概念 方面 -- 功能 目标 -- 原有方法 通知 -- 对原有方法增强的方法 连接点 -- 可以用来连接通知的地方(方法) 切入点 -- 将用来插入...

太猪-YJ
今天
4
0
一张图看懂亮度、明度、光度、光亮度、明亮度

亮度、明度、光亮度,Luminance和Brightness、lightness其实都是一个意思,只是起名字太难了。 提出一个颜色模型后,由于明度的取值与别人的不同,为了表示区别所以就另想一个词而已。 因此在...

linsk1998
昨天
8
0
Python应用:python链表示例

前言 python链表应用源码示例,需要用到python os模块方法、函数和类的应用。 首先,先简单的来了解下什么是链表?链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是...

python小白1
昨天
4
0
Source Insight加载源码

Source Insight是一个图形化的源代码查看工具(当然也可以作为编译工具)。如果一个项目的源代码较多,此工具可以很方便地查找到源代码自建的依赖关系。 1.创建工程 下图为Snort源代码的文件...

天王盖地虎626
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部