flask直观显示文本对比
博客专区 > 鸿弟 的博客 > 博客详情
flask直观显示文本对比
鸿弟 发表于1年前
flask直观显示文本对比
  • 发表于 1年前
  • 阅读 101
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

运维过程中,经常会对一些服务的配置文件进行修改,因此,用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进行编辑,修改些内容,就可以看出对比的效果了,如下:

共有 人打赏支持
粉丝 65
博文 51
码字总数 33082
×
鸿弟
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: