119-比较文件的差异

作者: 凯茜的老爸 | 来源:发表于2018-09-26 12:29 被阅读90次

比较两个文件的差异,可以直接使用vim。

# vim -d /etc/passwd /etc/passwd-

python标准库提供了一个difflib,可以进行文件的比较,并且可以生成网页的形式。

import difflib
import webbrowser
import sys
import string
import os
from random import choice

def rand_chs(n=8):   # 默认生成8个随机字符
    all_chs = string.ascii_letters + string.digits
    result = [choice(all_chs) for i in range(n)]
    return ''.join(result)

# 函数接收两个相似的文件名,返回HTML形式的字符串
def make_diff(lfile, rfile):
    d = difflib.HtmlDiff()

    # 将两个文件分别读到列表中
    with open(lfile) as fobj:
        ldata = fobj.readlines()

    with open(rfile) as fobj:
        rdata = fobj.readlines()

    return d.make_file(ldata, rdata)  # 返回HTML格式内容

if __name__ == '__main__':
    try:
        lfile = sys.argv[1]
        rfile = sys.argv[2]
    except IndexError:
        print('Usage: %s file1 file2' % sys.argv[0])
        sys.exit(1)
    if not os.path.isfile(lfile):
        print('No such file:', lfile)
        sys.exit(2)
    if not os.path.isfile(rfile):
        print('No such file:', rfile)
        sys.exit(3)
    data =make_diff(lfile, rfile)
    # 以下只是为说明内容增加中文显示,非必须项
    data = data.replace(';Added', ';Added(增加)')
    data = data.replace('>Changed', '>Changed(改变)')
    data = data.replace('>Deleted', '>Deleted(被删除)')
    data = data.replace('(f)irst change', '(f)irst change【第一处变更】')
    data = data.replace('(n)ext change', '(n)ext change【下一处变更】')
    data = data.replace('(t)op', '(t)op【回到顶部】')
    html_file = '/tmp/%s.html' % rand_chs()  # 用随机字符生成文件名
    with open(html_file, 'w') as fobj:
        fobj.write(data)
    webbrowser.open_new_tab('file:///%s' % html_file)   # 使用浏览器打开文件

相关文章

  • 119-比较文件的差异

    比较两个文件的差异,可以直接使用vim。 python标准库提供了一个difflib,可以进行文件的比较,并且可以...

  • Git 操作指南(二)

    一、 比较暂存区和HEAD的文件差异 git diff --cached 二、 比较工作区和暂存区的文件差异 gi...

  • Linux 基础教程 11-基本命令diff和comm

    diff命令 diff命令主要用来比较文件的差异。diff会以逐行的方式比较文本文件的差异,如果指定比较的是目录,...

  • diff

    全拼difference,比较文件的差异,常用于文本文件

  • 比较两个文件的差异

    在linux系统中,如果要对比两个文件的差异,可以直接使用vim vim -d /tmp/hsy6666.txt ...

  • Linux命令之文件管理 (八)

    Linux diff命令 Linux diff命令用于比较文件的差异。 diff以逐行的方式,比较文本文件的异同处...

  • 每天一个Linux命令(08):diff 命令

    Linux diff 命令用于比较文件的差异。diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则...

  • Diff

    比较Branch差异git diff branch1 branch2 --stat //显示出所有有差异的文件列表...

  • Linux ubuntu文件管理命令归纳(一)

    cat 查看文件 chown 改变所有者 diff命令用于比较文件的差异 file 辨识文件类型 less 浏览文...

  • 2016-07-13 Git 起步(三)

    直接记录快照,而非差异比较 svn\csv等是保存的信息看做一组基本文件和每个文件随着时间逐步积累的差异储存每个文...

网友评论

    本文标题:119-比较文件的差异

    本文链接:https://www.haomeiwen.com/subject/nkudoftx.html