python大文件去重_python3 大文件去重的方法
一、生成待去重数据
每行是固定位数的数字串
import os
from random import randint
#-- from u_工具 import *
print("———— 开始 ————")
#-- 打点()
# 用来配置的变量
位数 = 13
行数 = 500 * 10000
输出目录 = "./a_输入"
输出文件 = f"{输出目录}/随机数.txt"
# 预处理
_00 = "".join(["0" for i in range(位数 - 1)])
_100 = "1" + _00
最小值 = int(_100)
_1000 = _100 + "0"
最大值 = int(_1000)
if not os.path.exists(输出目录):
os.makedirs(输出目录)
#-- 输出文件 = 文件名防重_追加数字(输出文件)
# 实际处理
with open(输出文件,"a") as f:
for i in range(行数):
f.write(f"{randint(最小值, 最大值)}\n")
百分比 = (i+1) / 行数 * 100
if 百分比 == int(百分比):
print(f"已完成{int(百分比)}%")
#-- 打点()
#-- print(f"\n总耗时:{计时(0)}")
print("———— 结束 ————")
二、通过set()按行去重
1. 按原值比较
(1)读取全部数据
(2)用正则表达式来分行
(3)通过set数据结构来去除重复数据
(4)将set的数据写入文件
import os
import re
#-- from u_工具 import *
print("———— 开始 ————")
#-- 打点()
# 用来配置的变量
输入目录 = "./a_输入"
输出目录 = "./b_输出"
输出文件 = f"{输出目录}/去重结果.txt"
# 预处理
# 目录不存在就手动建立
if not os.path.exists(输出目录):
os.makedirs(输出目录)
if not os.path.exists(输入目录):
os.makedirs(输入目录)
#-- 输出文件 = 文件名防重_追加数字(输出文件)
# 获取待去重文件
待去重文件列表 = []
待去重文件列表 = [f"{输入目录}/{i}" for i in os.listdir(输入目录)]
#-- getDeepFilePaths(待去重文件列表,输入目录,"txt")
print(f"\n总共{len(待去重文件列表)}个文件")
# 实际处理
all_lines = []
文件个数 = 0
for 文件 in 待去重文件列表:
文件个数 += 1
print(f"\n处理第{文件个数}个文件")
#-- 打点()
# (1)读全部
with open(文件) as f:
data = f.read()
# (2)正则分行
regx = '''[\w\~`\!\@\#\$\%\^\&\*\(\)\_\-\+\=\[\]\{\}\:\;\,\.\/\\?]+'''
lines = re.findall(regx, data)
all_lines.extend(lines)
#-- 打点()
#-- print(f"读取完毕,耗时:{计时()}")
# (3)集合去重
all_lines_set = set(all_lines)
#-- 打点()
#-- print(f"\n\n去重完毕,耗时:{计时()}")
# (4)循环写入
with open(输出文件,"a") as f_rst:
for line in all_lines_set:
f_rst.write(line + '\n')
#-- 打点()
#-- print(f"\n写入完毕,耗时:{计时()}")
#-- 打点()
#-- print(f"\n\n总耗时:{计时(0)}")
print("———— 结束 ————")
王晓博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python3 大文件去重的方法
python大文件去重_python3 大文件去重的方法相关推荐
- python 压缩文件夹_python3 压缩文件及文件夹
zipfile模块 ZIP 文件格式是一个常用的归档与压缩标准. 这个模块提供了创建.读取.写入.添加及列出 ZIP 文件的工具. 它可以处理使用 ZIP64 扩展(超过 4 GB 的 ZIP 文件) ...
- python 获取文件列表_Python3 - 获取文件夹中的文件列表
问题 获取文件系统中某个目录下的所有文件列表. 解决方案 使用 os.listdir() 函数来获取某个目录中的文件列表,比如: import os file_name = os.listdir('/ ...
- python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...
本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...
- python读取大文件-Python如何读取、拆分大文件
简述 最近和第三方数据接触较多,数据量也开始陡增,从一开始的1KW行,最大到了1亿行,这让我这个常年处理"小数据'的人有点捉襟见肘.本来数据放在hive中也是可以操作的,但是有时候需求是做一 ...
- python 读取大文件_Python读取大文件
1. 前言 前几天在做日志分析系统,需要处理几十G的文件,我尝试用原来的for line in open(filepath).readlines()处理,但停顿好久也没变化,可见占用不小的内存.在网上 ...
- python编程单词排序_Python实现对文件进行单词划分并去重排序操作示例
本文实例讲述了Python实现对文件进行单词划分并去重排序操作.分享给大家供大家参考,具体如下: 文件名:test1.txt 文件内容: But soft what light through yon ...
- python单词去重及排序_Python实现对文件进行单词划分并去重排序操作示例
本文实例讲述了Python实现对文件进行单词划分并去重排序操作.分享给大家供大家参考,具体如下: 文件名:test1.txt 文件内容: But soft what light through yon ...
- python从入门到大神---4、python3文件操作最最最最简单实例
python从入门到大神---4.python3文件操作最最最最简单实例 一.总结 一句话总结: python文件操作真的很简单,直接在代码中调用文件操作的函数比如open().read(),无需引包 ...
- python 重复图片_删除重复文件或图片(去重)的python代码
通过python爬虫或其他方式保存的图片文件通常包含一些重复的图片或文件, 通过下面的python代码可以将重复的文件删除以达到去重的目的.其中,文件目录结构如下图: # /usr/bin/env p ...
- python 浏览器下载文件_同样一个下载地址,用python爬虫爬取的种子文件大小为0,而用浏览器是可以正常下载下来的?...
1.访问某个网页,用浏览器可以下载其中嵌入的种子文件,种子文件大小是正常的,用迅雷工具也可以正常下载,但是用python爬虫爬取,并且下载下来的数据大小为0? 2.这是我自己写的代码. url = ' ...
最新文章
- Python3中collections.OrderedDict介绍
- 中国数字化进程比发达国家快,小程序让我感到自豪 | IT领袖峰会
- Pandas简明教程-适用于竞赛、研究以及办公自动化
- 用WINRAR巧妙分割大压缩包
- 其他类型的链表和线性表的总结(一级)
- 手持gps坐标转换参数求解方法及在excel中的实现_怎么在GIS office 软件中批量导入坐标点位...
- 教自己如何的口若悬河
- VB制作OCX控件的步骤
- mysql 乐观锁和悲观锁,MySQL中的悲观锁与乐观锁
- 华为在鸿蒙的另一张王牌,华为的这两张王牌,将助力Mate40系列角逐安卓机皇的位置...
- VM虚拟机的三种网络连接模式
- windows电脑 安装asreml 设置防火墙 network TCP ports 5053 5443
- 在IGBT的开启过程中,IGBT的电压降低,电流上升,在IGBT的关断过程中IGBT的电压上升,电流下降,在一段时间内,电压和电流均不为0,由于功率等于电压乘以电流,即P=U×I,因此将产生损耗,开
- 百度诉被奇虎科技有限公司(以下简称北京奇虎公司)、奇虎三六零软件(北京)有限公司(以下简称奇虎三六零公司)不正当竞争纠纷一案
- 微信公众号上传素材并回复关键词推送该素材:thinphp开发微信公众号如何上传临时素材库
- DS18B20 数字温度传感器的使用和基于RT-Thread操作系统的实现
- html向上无间隔滚动文字(图片)
- 从AWS S3换成阿里云OSS存储所踩的坑
- 微店新品!微店首款《疯狂野蛮人》横版动作游戏来啦!
- ENVI_IDL: 批量制作专题地图
热门文章
- 哈勃分析系统解密:中招敲诈木马不用交赎金
- Netperf 网络性能测试
- UINavigationBar颜色设置 用色码设置有误差
- linux gif录制工具,Ubuntu中的Gif动画录制工具byzanz
- junit5教程_JUnit5教程
- libmodbus 封装成dll_Windows Visual Studio 2017 编译 libmodbus
- hi3798 run linux,EC6108V9(HI3798MV100)刷(linux)ubuntu16.04
- Ubuntu 的护眼软件 :RedShift
- 转 可以word ,excel ,pdf ,ppt 导入和导出的思维导图
- python贴吧-python爬取贴吧帖子