3.3.5 使用HtmlDiff对象

当想创建一个HTML来表示文件之间差异时,就可以使用HtmlDiff对象。特别对于Web服务器的应用就更加方便了,直接把数据返回即可。

例子:

#python3.4.3

import difflib

text1 = ‘‘‘  1. Beautiful is better than ugly.

2. Explicit is better than implicit.

3. Simple is better than complex.

4. Complex is better than complicated.

‘‘‘.splitlines(keepends=True)

text2 = ‘‘‘  1. Beautiful is better than ugly.

3.   Simple is better than complex.

4. Complicated is better than complex.

5. Flat is better than nested.

‘‘‘.splitlines(keepends=True)

diff = difflib.HtmlDiff().make_file(text1, text2)

print(diff)

结果输出如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<meta http-equiv="Content-Type"

content="text/html; charset=ISO-8859-1" />

<title></title>

<style type="text/css">

table.diff {font-family:Courier; border:medium;}

.diff_header {background-color:#e0e0e0}

td.diff_header {text-align:right}

.diff_next {background-color:#c0c0c0}

.diff_add {background-color:#aaffaa}

.diff_chg {background-color:#ffff77}

.diff_sub {background-color:#ffaaaa}

</style>

</head>

<body>

<table class="diff" id="difflib_chg_to0__top"

cellspacing="0" cellpadding="0" rules="groups" >

<colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>

<colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>

<tbody>

<tr><td class="diff_next" id="difflib_chg_to0__0"><a href="#difflib_chg_to0__0">f</a></td><td class="diff_header" id="from0_1">1</td><td nowrap="nowrap">  1. Beautiful is better than ugly.</td><td class="diff_next"><a href="#difflib_chg_to0__0">f</a></td><td class="diff_header" id="to0_1">1</td><td nowrap="nowrap">  1. Beautiful is better than ugly.</td></tr>

<tr><td class="diff_next"><a href="#difflib_chg_to0__top">t</a></td><td class="diff_header" id="from0_2">2</td><td nowrap="nowrap"><span class="diff_sub">   2. Explicit is better than implicit.</span></td><td class="diff_next"><a href="#difflib_chg_to0__top">t</a></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>

<tr><td class="diff_next"></td><td class="diff_header" id="from0_3">3</td><td nowrap="nowrap">   3. Simple is better than complex.</td><td class="diff_next"></td><td class="diff_header" id="to0_2">2</td><td nowrap="nowrap">   3.<span class="diff_add">  </span> Simple is better than complex.</td></tr>

<tr><td class="diff_next"></td><td class="diff_header" id="from0_4">4</td><td nowrap="nowrap"><span class="diff_sub">   4. Complex is better than complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to0_3">3</td><td nowrap="nowrap"><span class="diff_add">   4. Complicated is better than complex.</span></td></tr>

<tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to0_4">4</td><td nowrap="nowrap"><span class="diff_add">   5. Flat is better than nested.</span></td></tr>

<tr><td class="diff_next"></td><td class="diff_header" id="from0_5">5</td><td nowrap="nowrap"> </td><td class="diff_next"></td><td class="diff_header" id="to0_5">5</td><td nowrap="nowrap"> </td></tr>

</tbody>

</table>

<table class="diff" summary="Legends">

<tr> <th colspan="2"> Legends </th> </tr>

<tr> <td> <table border="" summary="Colors">

<tr><th> Colors </th> </tr>

<tr><td class="diff_add"> Added </td></tr>

<tr><td class="diff_chg">Changed</td> </tr>

<tr><td class="diff_sub">Deleted</td> </tr>

</table></td>

<td> <table border="" summary="Links">

<tr><th colspan="2"> Links </th> </tr>

<tr><td>(f)irst change</td> </tr>

<tr><td>(n)ext change</td> </tr>

<tr><td>(t)op</td> </tr>

</table></td> </tr>

</table>

</body>

</html>

把这段HTML文本写到一个文件里,使用浏览器打开会显示如下:

蔡军生 微信号:shenzhencai  深圳

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-01 20:58:43

3.3.5 使用HtmlDiff对象的相关文章

二、业务服务监控

二.业务服务监控 1.文件内容差异对比方法 difflib模块实现文件内容差异对比,difflib作为python的标准库模块,无需安装,作用是对比文本之间的差异,且支持输出可读性比较强的HTML文档,与linux下的diff命令相似.我们可以使用difflib对比代码,配置文件的差别,在版本控制方面是非常有用. (1)示例:两个字符串的差异对比 通过使用difflib模块实现两个字符串的差异对比,然后以版本控制风格进行输出 [/root/text1_lines.py] #! /usr/bin/

《Python自动化运维之路》 业务服务监控(二)

文件内容差异对比方法 目录: 实例:两个字符串的差异对比 生成美观的对比HTML格式文档 对比Nginx配置文件的差异 两个字符串的差异对比 本例通过使用difflib模块实现两个字符串的差异对比,然后以版本控制风格进行输出. >>> import difflib >>> >>> text1="difflib document v7.4" #定义字符串1 >>> text2="difflib docume

Python对比两个txt文件内容

difflib模块作为python的标准库模块,无需安装,作用是比对文本之间的差异,且支持输出可读性比较强的html格式. #!coding=utf-8 # 2018-9-19 import sys import difflib # 读取配置文件函数 def read_file(file_name): try: file_handle = open(file_name, 'r') text = file_handle.read().splitlines() # 读取后以行进行分割 file_ha

python文件处理(对比和筛选)

#!/user/bin/python #!coding=utf-8 # -*- coding: utf-8 -*- # 2017-9-25 #author:jingwenshuai import sys import difflib import re import os #--------------------------------比对两文件,将结果存入Result.html-------------------------------------------# # 读取配置文件函数 de

python运维开发常用模块(四)文件对比模块difflib

1.difflib介绍 difflib作为 Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持 输出可读性比较强的HTML文档,与Linux下的diff命令相似.我们可以 使用difflib对比代码.配置文件的差别,在版本控制方面是非常有用. Python 2.3或更高版本默认自带difflib模块,无需额外安装. 示例1:两个字符串的差异对比 [[email protected] part2]$ cat simple1.py #!/usr/bin/python #_*_cod

通过jQuery Ajax使用FormData对象上传文件

转自:http://www.cnblogs.com/labnizejuly/p/5588444.html FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". <form id="uploadForm" enctype="multipart/form-data"> <input id="file" type="file"

对象序列化和反序列--Hibernate的查询和新增极其相似

Hibernate几个关键字持久化,ORM(关系对象映射)(数据库中关系称作是一张表) 应用在项目中,刘一从写的查询代码,每次都挂掉,想要弄出测试数据,自己想着把查询出来的复杂数据弄到文件里自己要是去造那些复杂数据很麻烦public class Object1 { public static void main(String args[]){ HashMap<String, Object> obj=new HashMap<String,Object>(); obj.put(&quo

C#中XML与对象之间的序列化、反序列化

using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; namespace Xml.Utility { public static class XmlUtil { /// <summary> /// 将一个对象序列化为XML字符串 /// </summary> /// <param name="o">要序列化

菜鸟学python之对象类型及运算

Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型. 等号(=)用来给变量赋值. 1 变量赋值 1.1 单个变量赋值 >>> name="python" >>> print(name) python 1.2 多个变量赋值 >>> name=names="python&