Python练习【7】【文件对比并输出可读性较强的html文件】

题目:

利用python写出一个可在shell中执行的命令mydiff,用于比对两个文件之间的区别,输出可读性较强的html页面源码,可保存到html文件中进行查看。

  • 格式: mydiff file1 file2 [> save_file]

实现:

  • 1.利用sys.argv函数获取从命令行输入的参数,用于传递参数

    if len(sys.argv) !=3: # 如果参数数量不为3个输出命令的使用提示
        print(‘‘‘
        usage:  {} file1 file2 [>] [file to save]
        ‘‘‘.format(sys.argv[0]))
    else: # 当输入参数符合要求进行比对
        ... ...

  • 2.利用difflib.Htmldiff函数进行比对,并输出可读性较强的html页面源码
#sys.argv的后两个参数为需要进行比对的文件名
file1 = sys.argv[1]
file2 = sys.argv[2]
try:
        with open(file1)as f1 ,open(file2)as f2: # 打开两个文件
                content1= f1.read().splitlines(keepends=True) # 读取其中的文件
                content2= f2.read().splitlines(keepends=True)
                diff = difflib.HtmlDiff() # 创建工具对象
                result =diff.make_file(content1,content2) # 获取文件对比结果
                print(result) # 输出结果,可以看到html写的源码
except Exception as e: # 出现异常输出提示
        print(‘Error:‘+e)

  • 3.文件开头注明解释器位置和编码格式

    #!/usr/local/python3/bin/python3.6
    #encoding=utf-8

    完整代码:

    #!/usr/local/python3/bin/python3.6
    #encoding=utf-8
    import sys
    import difflib
    if len(sys.argv) !=3: # 如果参数数量不为3个输出命令的使用提示
        print(‘‘‘
        usage:  {} file1 file2 [>] [file to save]
        ‘‘‘.format(sys.argv[0]))
    else: # 当输入参数符合要求进行比对
        file1 = sys.argv[1]
        file2 = sys.argv[2]
        try:
                with open(file1)as f1, open(file2)as f2:  # 打开两个文件
                        content1 = f1.read().splitlines(keepends=True)  # 读取其中的文件
                        content2 = f2.read().splitlines(keepends=True)
                        diff = difflib.HtmlDiff()  # 创建工具对象
                        result = diff.make_file(content1, content2)  # 获取文件对比结果
                        print(result)  # 输出结果,可以看到html写的源码
        except Exception as e:  # 出现异常输出提示
                print(‘Error:‘ + e)

  • 4.将py文件拷贝至/usr/local/bin/中(此路径已在环境变量中),并增加执行权限。此时利用tab键补齐可以看到mydiff命令

  • 5.测试命令,输出了一个html编码

  • 6.重定向在桌面生成一个html文件(mydiff /etc/passwd /tmp/paswd > /home/kiosk/Desktop/diff.html)

  • 7.利用浏览器打开,可以看到可读性很强的html页面

原文地址:http://blog.51cto.com/13992211/2343876

时间: 2024-10-05 21:24:37

Python练习【7】【文件对比并输出可读性较强的html文件】的相关文章

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

php遍历目录输出目录及其下的所有图片文件

在做网站的时候,需要给文章内所有的图片添加上logo,如何利用ThinkPHP来实现. ThinkPHP为我们很好的提供了图像处理类,给文章中的所有图片加上水印的思路,上传的图片文件都保存在一个文件夹下面,我只需要获取该文件夹以及子文件夹下面的所有图片,遍历一次,加上水印即可,因此目前的难度只是怎么获取文件中的图片,并且遍历一次即可.[在ImagesController控制器中具体会出现二维数组的遍历]:因此添加水印的图片问题就转换成了利用PHP遍历目录输出目录及其下的所有图片文件 //遍历目录

python基本文件操作(文件输入和输出)

文件输入输出中常用的文件对象方法: open : 返回一个新的文件对象,调用该对象的上的方法可对文件进行任何操作 readline: 读取一行你给哦如果您包括结尾的换行符在内 write: 将数据写入文件中 close: 关闭文件对象:   举例:读取E盘中的work.txt文件 f = open('work.txt') line  =f.readline() print(line) f.close() 如果给readline设置一个参数 n 则读取n个字符 不设置 则只读取一行包括结尾的换行符

Python按行读文件对比

1. 最基本的读文件方法: # File: readline-example-1.py file = open("sample.txt") while 1:     line = file.readline()     if not line:         break     pass # do something 一行一行得从文件读数据,显然比较慢:不过很省内存. 在我的机器上读10M的sample.txt文件,每秒大约读32000行 2. 用fileinput模块 # File

Python文件对比

环境: python2.6.6 linux系统 对比文件差异用Python里的difflib模块: Python自带difflib模块,无需安装. 对比两个文件是否一样总体思路就是:将文件里的内容读出来然后再对比 符号 含义 + 包含在第二个序列中,但不包含第一个序列中 - 包含在第一个序列中,但不包含第二个序列中 ? 标志两个序列行存在增量差异 ^ 标志两个序列存在的差异字符 '' 两个序列行一致 示例一: #!/usr/bin/python #coding:utf-8 #2017,8,27

python文件输入和输出

1.1文件对象 文件只是连续的字节序列.数据的传输经常会用到字节流,无论字节流是由单个字节还是大块数据组成.1.2文件内建函数open()和file() 内建函数open()的基本语法是: file_object=open(file_name,access_mode='r',buffering=-1) file_name是包含要打开的文件名字的字符串,它可以是相对路径或者绝对路径. access_mode可选变量也是一个字符串,代表文件打开的模式. 'r'代表:读取: 'w'代表:写入: 'a'

小事牛刀之——python做文件对比

使用python对比filename1和filenam2的差异,并将差异写入到filename3中. #!/usr/bin/env python # -*- coding: utf-8 -*- # @File : file_diff.py # @Author: Maxwell Yang ([email protected]) # @Date : 2018/4/10 # @Desc : 从文件2中去除掉在文件1中有的行,生成文件3 filename1 = input('请输入需要剔除内容的文件路径

Python:遍历输出某路径下的所有文件和文件夹

怎么遍历输出某路径下的所有问价和文件夹? 这个问题和,"指定一个节点,输出以这个节点作为根节点的这棵树的所有子节点"一样. 递归可以实现. 如果是叶子节点(文件)了,就输出这个叶子节点的名称,返回. 否则,输出这个节点的名称(文件夹),并以这个结点再次作为根节点,遍历输出它的所有子节点. -- coding: utf-8 -- import os def traverse(f):fs = os.listdir(f)for f1 in fs:tmp_path = os.path.join

Python之文件输入和输出

文件的打开方式 r        以只读方式打开 w        以写方式打开(必要时清空) a        以追加模式打开 r+        以读写方式打开 w+        以读写方式打开 a+        以读写方式打开 文件输入输出 方法                作用 read()      读取字节到字符串中,最多读取给定数目个字节 readline()    读取一行,包括行结束符,以字符串方式返回 readlines()    读取所有行,以列表方式返回 write