文档章节

flask直观显示文本对比

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

© 著作权归作者所有

共有 人打赏支持
just_do_itit
粉丝 66
博文 51
码字总数 33669
作品 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
怎样用Beyond Compare比较两个txt文件

我们在日常的工作中会接触到很多的txt文本文件,有时候因为工作需要可能要比较两个txt文件的差异,无奈文本文件无任何规律可言,找到不同之处,十分困难。这个时候我们就可以使用Beyond Comp...

Navicat数据库管理工具
2016/05/03
140
0
有哪些比较工具

当我们需要比较两个文件,图片,程序等的差异的时候,我们需要用软件在进行比较,不如太耗时间尽力。但是现今网络上有着很多种文件比较工具,大家不知道那些比较好用。下面我们就来给大家介绍...

Navicat数据库管理工具
2016/06/07
151
0
Flask框架 —— 从入门到精通

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

水果糖
2016/02/26
402
0

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部