python文件内容比对_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()returntext

except IOErroraserror:

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 IOErroraserror:

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 infa.readlines():

str1.append(line.replace("\n",'')) #line.replace("\n",'') 去掉换行符\n#将B.txt中的内容逐行读到str2中

with open(file2_name,'r') asfb:for line infb.readlines():

str2.append(line.replace("\n",''))

#将两个文件中重复的行,添加到str_dump中for i instr1:if i instr2:

str_dump.append(i)

#将两个文件的行合并,并去重

str_all=set(str1+str2)

#将重复的行,在去重的合并行中,remove掉,剩下的就是不重复的行了for i instr_dump:if i instr_all:

str_all.remove(i)

#写入文件中

with open("Result.txt",'w+') asfc:for i inlist(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) #传入两文件的路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值