Python实现快速大文件比较代码解析
更多编程教程请到:菜鸟教程 https://www.piaodoo.com/
友情链接:好看站 http://www.nrso.net/
高州阳光论坛https://www.hnthzk.com/
问题
假如,在有两个大文件分别存储了大量的数据,数据其实很简单就是一堆字符串,每行存储一条,如何快速筛选出两个文件的异同之处么,或者如何筛选出两个文件中不同的元素呢?
刚开始我是通过最简单的方法,利用for循环去一个个的判断,时间复杂度为m的n次幂,当然当文件数量级为十万或者百万时,速率简直慢到了极点。
解决方法
利用set()的different(方法)可快速比较,两个set集合的不同之处,也就是对集合进行数学运算
假设:数据1拥有858882条记录,数据2有360029条记录,快速挑选出数据2中而不存在与数据1中的数据
方法:先将两个文件中的数据读入两个list:data1和data2,然后通过:set(data2).difference(set(data1)),获取data2与data1的差集
下面为一个小的demo,可以看到近百万级的数据,比较出差集也就需要1秒左右,效率不是一般的高
import time t1 = time.time() data1 = [] for i in open("inDB.txt","r",encoding="utf-8"):i = i.strip("\n")i = i.lower()data1.append(i) data2 = [] for i in open("data/18年.filename","r",encoding="utf-8"):i = i.strip("\n")i = i.lower()data2.append(i) newdata = set(data2).difference(set(data1)) t2 = time.time()
print(f"data1 length:\t{len(data1)}")
print(f"data2 length:\t{len(data2)}")
print(f"newdata length:\t{len(newdata)}")
print(f"time use:\t{round(t2 - t1,3)}s")
list最多可以存放多少条数据呢?
python中list最多可以存放多少条数据呢?
对于这个问题,有个网友调研了python的文档,结果跟计算机的性能相关
64位机器:2^63-1=9223372036854775807
32位机器:2^31-1=2147483647
import sys
print(sys.maxsize)
print(pow(2,63)-1)
9223372036854775807
9223372036854775807
集合set的操作
内置函数 | 作用 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持菜鸟教程www.piaodoo.com。
Python实现快速大文件比较代码解析相关推荐
- python无法处理特别大的数据文件_Python实现快速大文件比较代码解析
问题 假如,在有两个大文件分别存储了大量的数据,数据其实很简单就是一堆字符串,每行存储一条,如何快速筛选出两个文件的异同之处么,或者如何筛选出两个文件中不同的元素呢? 刚开始我是通过最简单的方法,利用 ...
- python中的doc_基于Python获取docx/doc文件内容代码解析
这篇文章主要介绍了基于Python获取docx/doc文件内容代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 整体思路: 下载文件并修改后缀 ...
- python用什么处理文件_利用Python如何快速处理文件
利用Python如何快速处理文件 我之前要合并将近1000个CSV表格 每个表格共370列,约360行不等,列名相同 三个方案瞬间浮现在我眼前: 1.Ctrl C + Ctrl V--可以睡公司了: ...
- python文本格式上一日_一日一技:在 Python 中快速遍历文件
一日一技:在 Python 中快速遍历文件 摄影:产品经理 厨师:产品经理 当我们要在一个文件夹及其子文件夹里面寻找特定类型的文件,我们可能会这样写代码: 没有子文件夹时 import os all_ ...
- 一文教会你如何用 Python 分割合并大文件
有时候,我们需要把一个大文件发送给别人,但是限于传输通道的限制,比如邮箱附件大小的限制,或者网络状况不太好,需要将大文件分割成小文件,分多次发送,接收端再对这些小文件进行合并.今天就来分享一下用 Py ...
- 使用请求在python中下载大文件
本文翻译自:Download large file in python with requests Requests is a really nice library. 请求是一个非常不错的库. I' ...
- Python中sort和sorted函数代码解析
Python中sort和sorted函数代码解析 本文研究的主要是Python中sort和sorted函数的相关内容,具体如下. 一.sort函数 sort函数是序列的内部函数 函数原型: L.sor ...
- 用 Python 高效处理大文件
前言 为了进行并行处理,我们将任务划分为子单元.它增加了程序处理的作业数量,减少了整体处理时间. 例如,如果你正在处理一个大的CSV文件,你想修改一个单列.我们将把数据以数组的形式输入函数,它将根据可 ...
- Python——CSV读取大文件报错_csv.Error: field larger than field limit
Python--CSV读取大文件报错_csv.Error: field larger than field limit 使用Python读取较大的csv文件时,可能出现大字段,导致超过字段默认限制,从 ...
- python读取大文件-python如何读取大文件以及分析时的性能优化小技巧
在二代.三代测序背景下,分析人员难免会遇到解析超过1G.或者10G以上的文件.这里将给大家简单介绍下如何用python读取大文件,并给大家提两个优化代码的小建议. 首先,python 读取GB级大文件 ...
最新文章
- springboot打包成jar包后找不到xml,找不到主类的解决方法
- 小米5x_小米刷机大全(附教程)
- Django之ORM(多对多)
- jq画布插件_超炫HTML 5开发的jQuery进度条插件
- Android之图片边显示模糊原因
- 20175305张天钰 《java程序设计》第四周课下测试总结
- 计算机组成原理AB什么运算,2010~2011学年武汉大学计算机组成原理AB类AB卷及答案...
- 【hue】 There are currently no roles defined
- cat EOF file
- 浅谈Android事件分发
- java到达时间后自动执行代码_java设置按时间自动执行
- 2021年饶州中学高考成绩查询,鄱阳饶州中学2019高考成绩喜报、一本二本上线人数情况...
- c语言五子棋对局结果存储,基于C语言五子棋小游戏总结.doc
- 程序开发中的软实力和硬实力
- 如何删除复制文字产生的word回车换行符
- 吴恩达神经网络与深度学习——深度神经网络
- vue2.0 在华为手机等手机自带浏览器打开白屏的问题
- 【转】如何检测wifi信号强度? -- 不错
- 单位dB(分贝)的含义和好处,dBm(dBmW 分贝毫瓦)的含义 dB的含义
- android 根文件系统,Android根文件系统相关应用介绍