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("———— 結束 ————")
相關文章
- 大型檔案去重
- shell 檔案合併 去重 分割
- linux檔案合併、去重、拆分Linux
- 大檔案的排序和去重 超級簡單的實現排序
- nodejs 讀取excel檔案,並去重NodeJSExcel
- python合併多個csv檔案並去重Python
- 大資料去重(data deduplication)方案大資料
- 檔案全域性去重!對接雲盤,實現跨系統檔案資源集中管控
- Linux命令根據某一列對檔案內容去重Linux
- 切片去重(string,int型別去重)型別
- python3執行.sql檔案PythonSQL
- Python3之檔案操作filePython
- Python3 檔案操作詳解Python
- python3 socket檔案傳輸Python
- Python3中檔案處理Python
- DOC檔案何去何從
- sql 去重SQL
- 列表去重
- 【Golang實現檔案伺服器】(二)圖片去重與縮圖功能Golang伺服器
- JS陣列去重 – JSON陣列去重陣列JSON
- 陣列去重陣列
- 字串切片去重字串
- Redis去重方法Redis
- MySQL 去重SQLMySql
- datagridView 去重View
- 結果去重
- MySQL資料庫行去重複和列去重複MySql資料庫
- python3檔案開頭怎麼寫Python
- JS單行、多行文字字元去重和行去重JS字元
- python對excel檔案中指定表格的指定列資料進行去重複操作。PythonExcel
- 大檔案Copy
- MySQL去重資料MySql
- 陣列物件去重陣列物件
- postgresql表如何去重SQL
- Mysql查詢去重MySql
- 爬蟲去重策略爬蟲
- JavaScript陣列去重JavaScript陣列
- JavaScript 陣列去重JavaScript陣列