'''

查找A文件中,与B文件中内容不重复的内容

'''

#!usr/bin/python

import sys

import os

'''

字符串查找函数,使用二分查找法在列表中进行查询

'''

def binarySearch(value, lines):

right = len(lines) - 1

left = 0

a = value.strip()

while left <= right:

middle = int((right + left + 1)/2)

b = lines[middle].strip()

if a == b:

return 1

if a < b:

right = middle - 1

else:

left = middle + 1

return 0

DPT = 100000 # DPT 是Data Per File的意思

fileAName = sys.argv[1];

fileBName = sys.argv[2];

#STEP1:先拆掉B文件,作为比较基准,临时文件命名为temp1,temp2,...,tempN

print("拆分比对文件...\n")

fB = open(fileBName)

tempFileNo = 1

tempFileName = "temp{0}".format(tempFileNo)

fTemp = open(tempFileName, "w+")

line = fB.readline()

lineCount = 0

while line:

if lineCount >= DPT:

fTemp.flush()

fTemp.close()

tempFileNo = tempFileNo + 1

tempFileName = "temp{0}".format(tempFileNo)

fTemp = open(tempFileName, "w+")

lineCount = 0

fTemp.write(line)

lineCount = lineCount + 1

line = fB.readline()

fTemp.flush()

fTemp.close()

fB.close()

print("拆分完成,一共{0}个临时文件,{1}条数据。\n".format(tempFileNo, (tempFileNo-1)*DPT + lineCount))

#STEP2:把A文件与B文件拆出来的临时文件逐个进行比较,将结果轮流写入文件result0, result1

# 最后写入的result文件就是最终结果

fA = open(fileAName)

resultTempFile = {"result0", "result1"};

tempIndex = 0

fOut = open("repeat", "w+")

repeatCount = 0

for i in range(1, tempFileNo + 1):

print("比较第{0}个临时文件...\n".format(i))

if 0 == tempIndex:

resultTempFile = "result0"

tempIndex = 1

else:

resultTempFile = "result1"

tempIndex = 0

fResult = open(resultTempFile, "w+")

fTemp = open("temp{0}".format(i))

lineSet = fTemp.readlines()

fTemp.close()

lineList = list(lineSet)

lineList.sort()

line = fA.readline()

while line:

if 0 == binarySearch(line, lineList):

fResult.write(line)

else:

fOut.write(line)

repeatCount = repeatCount + 1

line = fA.readline()

fA.close()

fResult.flush()

fResult.close()

fA = open(resultTempFile)

fA.close()

fOut.flush()

fOut.close()

print("比较完成,重复数据{0}条".format(repeatCount))

os.rename(resultTempFile, "result")

#STEP3:结束后把临时文件都删掉

print("删除临时文件...\n")

while tempFileNo > 0:

tempFileName = "temp{0}".format(tempFileNo)

os.remove(tempFileName)

tempFileNo = tempFileNo - 1

print("脚本结束。\n")

python删除两个excel表中的相同元素_python筛选出两个文件中重复行的方法相关推荐

  1. python查找两个数组中相同的元素_找出两个数组的相同元素,最优算法?

    在做新旧接口交替过程中,遇到了老接口和新接口json数据有些不一致的情况,需要比较两个json对象,把相同的元素赋其中一个json对象中变量的值.而且其中一个json最后输出格式还需要改变下属性名,思 ...

  2. python找出两个列表不同元素_python 找出两个列表的相同元素与不同元素

    python 找出两个列表的相同元素与不同元素,用了以下几种方法 1. 通过set 集合 list1 = [1,2,3] list2=[2,3,4] set1 = set(list1) set2 = ...

  3. python两个表格相同数据筛选_python筛选出两个文件中重复行的方法

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  4. Excel如何实现两个工作表数据的对比,比较两个Excel表,两个表格对比 的绿色工具

    两个不同的EXCEL表格如何进行排序对比,两个Excel表如何比较一样不一样 如何比较两个excel,使用这个工具:http://www.excelfb.com/  点击: 表对齐比较--> 比 ...

  5. Python操作两个Excel表,筛选出新增和已删除的条目

    今天实习收到了一个任务,手头有两个excel表,分别是4月份和五月份的两份资料,需要找出五月份excel和四月份相比较被删除和新增的条目.(他们事业单位平时都是人工处理这些任务,几百个条目这得校对到什 ...

  6. python处理excel表格数据-利用Python处理和分析Excel表中数据实战.doc

    利用Python处理和分析Excel表中数据实战 [利用python进行数据分析--基础篇]利用Python处理和分析Excel表中数据实战 原创 2017年06月28日 15:09:32 标签: p ...

  7. python对比excel两列数据_python 对比excel表格数据表-python实现两个excel表列数据对比若源表与目标表存......

    在数据分析方面,比起python,excel的局限性在哪 data3 = pandas.merge(data1, data2, on=['名称'], how='inner') inner:内连接,取交 ...

  8. python合并多个excel表到一张表中(有表头)

    python合并多个excel表到一张表中:需要合并的表格每个表头相同 代码: ------------------------ # 下面这些变量需要您根据自己的具体情况选择 biaotou = [' ...

  9. Python xlwt,xlrd对Excel表求笛卡尔积

    Python xlwt,xlrd对Excel表求笛卡尔积 应用背景 待处理的Excel表单模版 处理后导出的Excel效果 具体代码实现 应用背景 前些日子,在项目中遇到多级分类合并问题,每一级分类格 ...

最新文章

  1. Webwork 学习之路(四)Configuration 详解
  2. 好好学python·运算符和流程控制
  3. 十、【栈和队列】队列
  4. 【附源码】一看就懂的感知机算法PLA
  5. ACL 2022 | 清华大学、DeepMind等指出现有小样本学习方法并不稳定有效,提出评价框架...
  6. mysql解压缩版配置_MySQL 5.6 for Windows 解压缩版配置安装
  7. 实体零售全渠道及数字化发展报告(2020)
  8. Essentials of Deep Learning: Visualizing Convolutional Neural Networks in Python
  9. 喜欢《权利的游戏》就一定要看《代码的游戏》
  10. 最后的答辩之银行电话营销响应模型
  11. 这12个GIS软件一个比一个好用
  12. window字体安装方法,fonts安装方法
  13. .NET破解之百分百营销软件系列
  14. java理论笔试题_Java基础笔试题及答案
  15. 生产排产软件中MTO模式的优缺点
  16. 已解决KfcError: KFC Crazy Thursday WhoEver Gives me 50 CNY, I Will Thank Him.
  17. oracle集群启动状态,循序渐进:Oracle 11.2 RAC集群进程的初始化与启动过程
  18. OpencvSharp的Mat类型数组传入c++的DLL
  19. 10.1 黑马Vue电商后台管理系统之完善订单管理模块--加入修改订单模块
  20. weblogic 安装升级补丁出现内存溢出问题解决

热门文章

  1. linux创建自定义组件qt,关于QT自定义控件
  2. java system.setproperties_在JAVA中 System.getProperty 和 System.setProperty 方法.
  3. windows下的diskpart指令彻底格式化清除U盘
  4. 树莓派的四种登陆方式
  5. atom编写python程序_编写我们的第一个Python程序,print.py
  6. 线程池中的线程复用原理
  7. 电脑操作系统维护10条实用建议!
  8. 开源:分享10 个让你笑的合不拢嘴的 GitHub 项目!
  9. 数据优化:求求你别再用offset和limit分页了
  10. 云服务器建站原理_云服务器cvm与建站主机之间的区别