#!/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文件处理(对比和筛选)的更多相关文章

  1. 利用python进行坐标提取以及筛选(文件操作的小应用)

    由于目前暂时还未学习到python关于数据处理的模块方面的知识,且刚好最近朋友发来一份坐标数据文件(txt格式),让我帮他对其进行筛选, 因此利用了最近刚学过的python文件处理操作以及以前所学的基 ...

  2. 【Python文件处理】递归批处理文件夹子目录内所有txt数据

    因为有个需求,需要处理文件夹内所有txt文件,将txt里面的数据筛选,重新存储. 虽然手工可以做,但想到了python一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需 ...

  3. python文件和文件夹訪问File and Directory Access

    http://blog.csdn.net/pipisorry/article/details/47907589 os.path - Common pathname manipulations 都是和路 ...

  4. Go/Python/Erlang编程语言对比分析及示例

    本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性,不过最主要的原因是这几个我比较熟悉. Go的很多语言特性借鉴 ...

  5. python 全栈开发,Day29(昨日作业讲解,模块搜索路径,编译python文件,包以及包的import和from,软件开发规范)

    一.昨日作业讲解 先来回顾一下昨日的内容 1.os模块 和操作系统交互 工作目录 文件夹 文件 操作系统命令 路径相关的 2.模块 最本质的区别 import会创建一个专属于模块的名字, 所有导入模块 ...

  6. 编译Python文件(了解)

    目录 编译Python文件(了解) 批量生成.pyc文件(了解) 编译Python文件(了解) 为了提高加载模块的速度,强调强调强调:提高的是加载速度而绝非运行速度.python解释器会在__pyca ...

  7. Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!

    Go/Python/Erlang编程语言对比分析及示例   本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...

  8. Python文件和数据格式化(教程)

    文件是一个存储在副主存储器的数据序列,可包含任何数据内容. 概念上,文件是数据的集合和抽象,类似的,函数是程序的集合和抽象. 用文件形式组织和表达数据更有效也更加灵活. 文件包括两种形式,文本文件和二 ...

  9. 编译Python文件

    编译Python文件 一.编译Python文件 为了提高加载模块的速度,强调强调强调:提高的是加载速度而绝非运行速度.python解释器会在__pycache__目录中下缓存每个模块编译后的版本,格式 ...

  10. Linux下Python 文件内容替换脚本

    Linux下Python 文件替换脚本 import sys,os if len(sys.argv)<=4: old_text,new_text = sys.argv[1],sys.argv[2 ...

随机推荐

  1. Vue3.0中引入地图(谷歌+高德+腾讯+百度)

    1 概述 项目需求需要引入地图,对于目前最新的Vue3.0,无论是百度/高德/腾讯地图目前还没有适配,只有Vue 2.x版本的: 目前只有谷歌地图的Vue3.0适配: 但是没有适配并不代表不能使用,本 ...

  2. Deployment常用命令

    // 查询详细信息,获取升级速度 kubectl describe deployments // 暂停升级 kubectl rollout pause deployment/deploymentngi ...

  3. 《C++编程思想》部分章节学习笔记整理

    简介 此笔记为<C++编程思想>中部分章节的学习笔记,主要是第15章--多态性和虚函数 的学习笔记,此外还有少量其他章节的内容. 目录 文档:<C++编程思想>

  4. Mybatis3源码笔记(三)Configuration

    1. XMLConfigBuilder 上一篇大致介绍了SqlSession的生成.在DefaultSqlSessionFactory的构造函数中就提到了Configuration这个对象.现在我们来 ...

  5. aws eks ebs StorageClass PersistentVolume PersistentVolumeClaim

    aws EBS 提供存储资源 Amazon EBS CSI 驱动程序的安装,请参考https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/ebs- ...

  6. 1014 Waiting in Line

    Suppose a bank has N windows open for service. There is a yellow line in front of the windows which ...

  7. 在 Y 分钟内学会 Python

    在 Y 分钟内学会 Python 这是翻译, 原文地址: Learn Python in Y Minutes 在 90 年代初, Python 由 Guido van Rossum 创造, 现在, 它 ...

  8. 1.4.17 base标签

    如果我们定义的超链接在另一个窗口打开,代码如下: <!DOCTYPE html> <html lang="en"> <head> <met ...

  9. php的call_user_func_array()使用场景

    1..动态调用普通函数时,比如参数和调用方法名称不确定的时候很好用 function sayEnglish($fName, $content) { echo 'I am ' . $content; } ...

  10. hdu1316 水大数

    题意:      给你一个区间,问这个区间有多少个斐波那契数. 思路:      水的大数,可以直接模拟,要是懒可以用JAVA,我模拟的,打表打到1000个就足够用了... #include<s ...