python筛选出两个文件中重复行的方法


Posted in Python onMay 31, 2018

本文实例为大家分享了python脚本筛选出两个文件中重复的行数,供大家参考,具体内容如下

'''
查找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 相关文章推荐
Python使用urllib模块的urlopen超时问题解决方法
Nov 08 Python
Python实现简单的代理服务器
Jul 25 Python
用Python编写一个简单的CS架构后门的方法
Nov 20 Python
python脚本开机自启的实现方法
Jun 28 Python
Python 使用type来定义类的实现
Nov 19 Python
python构造函数init实例方法解析
Jan 19 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 Python
python使用Word2Vec进行情感分析解析
Jul 31 Python
Django中template for如何使用方法
Jan 31 Python
PyTorch 如何检查模型梯度是否可导
Jun 05 Python
python通过函数名调用函数的几种方法总结
Jun 07 Python
Python如何识别银行卡卡号?
Jun 10 Python
python删除文本中行数标签的方法
May 31 #Python
Python使用wget实现下载网络文件功能示例
May 31 #Python
Python使用progressbar模块实现的显示进度条功能
May 31 #Python
python调用Matplotlib绘制分布点并且添加标签
May 31 #Python
python批量修改文件编码格式的方法
May 31 #Python
Python用for循环实现九九乘法表
May 31 #Python
python实现txt文件格式转换为arff格式
May 31 #Python
You might like
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
MYSQL环境变量设置方法
2007/01/15 PHP
php json与xml序列化/反序列化
2013/10/28 PHP
php cli换行示例
2014/04/22 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
php绘制一个矩形的方法
2015/01/24 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
使用jscript实现二进制读写脚本代码
2008/06/09 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
一个简单的js树形菜单
2011/12/09 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
eclipse创建python项目步骤详解
2019/05/10 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
keras topN显示,自编写代码案例
2020/07/03 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
施华洛世奇英国官网:SWAROVSKI英国
2017/03/13 全球购物
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
大学军训心得体会800字
2016/01/11 职场文书
python实现网络五子棋
2021/04/11 Python