文档章节

flask直观显示文本对比

实践哥
 实践哥
发布于 2016/11/01 18:27
字数 466
阅读 117
收藏 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进行编辑,修改些内容,就可以看出对比的效果了,如下:

 

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

© 著作权归作者所有

共有 人打赏支持
实践哥
粉丝 66
博文 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
06/14
0
0
Flask入门 表单Flask-wtf form原生与Bootstrap渲染(七)

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

善良小郎君
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

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部