zoukankan      html  css  js  c++  java
  • 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-------------------------------------------#
    
    # 读取配置文件函数
    def read_file(file_name):
        try:
            file_handle = open(file_name, 'r')
            text = file_handle.read().splitlines()         # 读取后以行进行分割
            file_handle.close()
            return text
        except IOError as error:
            print 'Read file Error: {0}'.format(error)
            sys.exit()
    
    
    # 比较两个文件并输出html格式的结果
    def compare_file(file1_name, file2_name):
        if file1_name == "" or file2_name == "":
            print '文件路径不能为空:file1_name的路径为:{0}, file2_name的路径为:{1} .'.format(file1_name, file2_name)
            sys.exit()
        text1_lines = read_file(file1_name)
        text2_lines = read_file(file2_name)
        diff = difflib.HtmlDiff()                             # 创建htmldiff 对象
        result = diff.make_file(text1_lines,text2_lines)     # 通过make_file 方法输出 html 格式的对比结果
        #  将结果保存到result.html文件中并打开
        try:
            with open('result.html', 'w') as result_file:     #同 f = open('result.html', 'w') 打开或创建一个result.html文件
                result_file.write(result)                     #同 f.write(result)
        except IOError as error:
            print '写入html文件错误:{0}'.format(error)
    
    
    #------------------------------------取出不同部分存入Result.txt-------------------------------------------#
    
    #取出不同部分存入Result.txt
    def result(file1_name,file2_name):
        if file1_name == "" or file2_name == "":
            print '文件路径不能为空:file1_name的路径为:{0}, file2_name的路径为:{1} .'.format(file1_name, file2_name)
            sys.exit()
        str1=[]
        str2=[]
        str_dump=[]
        #将A.txt的内容逐行读到str1中
        with open(file1_name,'r') as fa:                #相当于fa=open(file1_name,'r')
            for line in fa.readlines():
                str1.append(line.replace("
    ",''))      #line.replace("
    ",'') 去掉换行符
    
        #将B.txt中的内容逐行读到str2中
        with open(file2_name,'r') as fb:
            for line in fb.readlines():
                str2.append(line.replace("
    ",''))
         
        #将两个文件中重复的行,添加到str_dump中
        for i in str1:
            if i in str2:
                str_dump.append(i)
         
        #将两个文件的行合并,并去重
        str_all=set(str1+str2)
         
        #将重复的行,在去重的合并行中,remove掉,剩下的就是不重复的行了
        for i in str_dump:
            if i in str_all:
                str_all.remove(i)
        #写入文件中
        with open("Result.txt",'w+') as fc:
            for i in list(str_all):
                fc.write(i+'
    ')
        fa.close()
        fb.close()
        fc.close()
    
    
    if __name__ == "__main__":
        x = raw_input(u"请输入第一个文件路径:")
        y = raw_input(u"请输入第二个文件路径:")
        compare_file(x, y)    #传入两文件的路径
        result(x,y)    #传入两文件的路径
  • 相关阅读:
    UVA 10600 ACM Contest and Blackout(次小生成树)
    UVA 10369
    UVA Live 6437 Power Plant 最小生成树
    UVA 1151 Buy or Build MST(最小生成树)
    UVA 1395 Slim Span 最小生成树
    POJ 1679 The Unique MST 次小生成树
    POJ 1789 Truck History 最小生成树
    POJ 1258 Agri-Net 最小生成树
    ubuntu 用法
    ubuntu 搭建ftp服务器,可以通过浏览器访问,filezilla上传文件等功能
  • 原文地址:https://www.cnblogs.com/yizhipanghu/p/9701059.html
Copyright © 2011-2022 走看看