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("———— 結束 ————")
相關文章
- linux檔案合併、去重、拆分Linux
- shell 檔案合併 去重 分割
- nodejs 讀取excel檔案,並去重NodeJSExcel
- python3 socket檔案傳輸Python
- Python3之檔案操作filePython
- python3執行.sql檔案PythonSQL
- Linux命令根據某一列對檔案內容去重Linux
- 檔案全域性去重!對接雲盤,實現跨系統檔案資源集中管控
- 大資料去重(data deduplication)方案大資料
- python3檔案開頭怎麼寫Python
- 切片去重(string,int型別去重)型別
- JS陣列去重 – JSON陣列去重陣列JSON
- Nodejs檔案批量重全名NodeJS
- Python3編碼如何實現檔案操作?Python
- 列表去重
- python對excel檔案中指定表格的指定列資料進行去重複操作。PythonExcel
- Python3檢查檔案是否存在的常用方法!Python
- 【python3】匯入zip 檔案裡的模組Python
- 陣列去重陣列
- List<string> 去重
- 結果去重
- 字串切片去重字串
- Redis去重方法Redis
- 去重語句
- list 集合去重
- Python3 - 獲取資料夾中的檔案列表Python
- Python3中如何檢查檔案是否存在?Python教程!Python
- 如何分發大檔案、大檔案傳輸解決方案
- 如何快速傳輸大檔案,介紹大檔案快速方法
- 大檔案傳輸軟體怎麼選?重點看這一點
- JS單行、多行文字字元去重和行去重JS字元
- 大檔案如何傳輸,大檔案的傳輸方式有哪些?
- git 查詢大檔案、刪除大檔案詳細步驟Git
- JavaScript陣列去重JavaScript陣列
- 爬蟲去重策略爬蟲
- MySQL去重資料MySql
- ES 6 去重方法
- 陣列物件去重陣列物件