• difflib — 计算差异的辅助工具


    difflib模块提供的类和方法用来进行序列的差异化比较,它能够比对文件并生成差异结果文本或者html格式的差异化比较页面,如果需要比较目录的不同,可以使用filecmp模块

    difflib.Differ

    此类比较的是文本行的差异并且产生适合人类阅读的差异结果或者增量结果,结果中各部分的表示如下

    import sys
    import difflib
    
    
    def read_file(filename):
        try:
            with open(filename, 'r', encoding='UTF-8') as f:
                return f.readlines()
        except IOError:
            print("ERROR: 没有找到文件:%s或读取文件失败!" % filename)
            sys.exit(1)
    
    
    def compare_file(file1, file2):
        file1_content = read_file(file1)
        file2_content = read_file(file2)
        d = difflib.Differ()
        diff = d.compare(file1_content, file2_content)
        return ''.join(diff)
    
    ret = compare_file(r'D:	est_prostaticspringboot-saoleimastersrcmainjavacomexamplecontrollerIndex.java',r'D:	est_prostaticspringboot-saolei	estsrcmainjavacomexamplecontrollerIndex.java')
    difflib
    +         System.out.println("修改了当前方法");
              return "index";
          }
    +     // 下面删除了一个方法
    -     
    -     @Autowired
    -     private TestBean tb;
    -     
    -     @SecurityIgnoreHandler
    -     @RequestMapping("/single")
    -     @ResponseBody
    - 
    -     public String single() {
    差异

    difflib.HtmlDiff

    此类可以被用来创建HTML表格 (或者说包含表格的html文件) ,两边对应展示或者行对行的展示比对差异结果。

    import sys
    import difflib
    
    
    def read_file(filename):
        try:
            with open(filename, 'r', encoding='UTF-8') as f:
                return f.readlines()
        except IOError:
            print("ERROR: 没有找到文件:%s或读取文件失败!" % filename)
            sys.exit(1)
    
    
    def compare_file(file1, file2, out_file):
        file1_content = read_file(file1)
        file2_content = read_file(file2)
    d
    = difflib.HtmlDiff() result = d.make_file(file1_content, file2_content) with open(out_file, 'w',encoding='utf-8') as f: f.writelines(result) content_html = compare_file(r'路劲1',r'路劲2',r'输出路劲.html')

    还有好多种方法 待更新

  • 相关阅读:
    vue 购买弹出框 动画
    vue 和animate.css 的动画使用
    获得url地址?后的参数
    Java 实现随机数组元素升降序
    java for循环实现九九乘法表
    java 随机生成字符串验证码
    Mysql插入值时,避免重复插入
    Mysql的unique和primary key
    2020 3.6日电话面试(某外包公司)
    Intellij IDEA配置javaweb项目
  • 原文地址:https://www.cnblogs.com/a438842265/p/13156340.html
Copyright © 2020-2023  润新知