每行是固定位数的数字串
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("———— 结束 ————")
(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("———— 结束 ————")