1. 程式人生 > >python文件處理(對比和篩選)

python文件處理(對比和篩選)

重復 不能 class split str1 file 掉換行符 對比 讀取

#!/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("\n",‘‘)) #line.replace("\n",‘‘) 去掉換行符\n #將B.txt中的內容逐行讀到str2中 with open(file2_name,r) as fb: for line in fb.readlines(): str2.append(line.replace("\n",‘‘)) #將兩個文件中重復的行,添加到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+\n) fa.close() fb.close() fc.close() if __name__ == "__main__": x = raw_input(u"請輸入第一個文件路徑:") y = raw_input(u"請輸入第二個文件路徑:") compare_file(x, y) #傳入兩文件的路徑 result(x,y) #傳入兩文件的路徑

python文件處理(對比和篩選)