第一次运行,自动生成配置文件
第二次运行,自动读取配置文件
import os,json,platform
from uuid import uuid1
from u_工具 import 配置,打点,计时,序号,序号_重置
print("———— 开始 ————")
打点()
# region 1.用来配置的变量
config = {
"输入目录": "./a_输入",
"输出目录": "./b_输出",
"小文件大小": 50 # 单位 M
}
config_filePath = "./配置文件2.json"
关联表 = {
"输入目录":"输入目录",
"输出目录":"输出目录",
"小文件大小":"小文件大小",
}
if os.path.exists(config_filePath):
配置.加载(config_filePath).关联(config,关联表).重载()
else:
if not os.path.dirname(config_filePath):
os.makedirs(os.path.dirname(config_filePath))
with open(config_filePath, 'w', encoding='utf-8') as f:
json.dump(config, f, ensure_ascii=False, indent=2)
# endregion
# region 2.预处理
# 调整小文件大小 扩充到M
config['小文件大小'] = int(config['小文件大小']) * 1024 * 1024
# 目录不存在就手动建立
if not os.path.exists(config['输出目录']):
os.makedirs(config['输出目录'])
# 获取待去重文件
if not os.path.exists(config['输入目录']):
os.makedirs(config['输入目录'])
if os.path.isdir(config['输入目录']):
待去重文件列表 = [f"{config['输入目录']}/{i}" for i in os.listdir(config['输入目录']) if not os.path.isdir(f"{config['输入目录']}/{i}")]
else:
待去重文件列表 = [config['输入目录']]
print(f"总共{len(待去重文件列表)}个文件")
print(待去重文件列表)
换行符 = b"\n"
if platform.system().lower() == 'windows':
换行符 = b"\r\n"
# endregion
# region 3.实际处理
# (1)分割大文件
打点()
待排序文件列表 = []
待补全数据 = b""
for 文件 in 待去重文件列表:
序号_重置(1)
with open(文件, 'rb') as f:
文件名 = os.path.basename(文件).split(".")[0]
buf = f.read(config['小文件大小'])
while buf:
data = buf.split(换行符,1)
新路径 = f"{config['输出目录']}/{文件名}_{序号('1').zfill(2)}_{uuid1()}.txt"
with open(新路径, 'ab') as ff:
ff.write(待补全数据 + data[0])
待排序文件列表.append(新路径)
try:
待补全数据 = data[1]
except:
待补全数据 = b""
buf = f.read(config['小文件大小'])
新路径 = f"{config['输出目录']}/{文件名}_{序号('1').zfill(2)}_{uuid1()}.txt"
with open(新路径, 'ab') as ff:
ff.write(待补全数据 + 换行符)
待排序文件列表.append(新路径)
待补全数据 = b""
buf,data,待补全数据=None,None,None
打点()
print(f"\n分割大文件完成,共耗时:{计时()}")
print(f"\n输出目录:{config['输出目录']}")
# endregion
打点()
print(f"\n\n总耗时:{计时(0)}")
print("———— 结束 ————")
print()
os.system('pause')
工具类:
配置:https://blog.youkuaiyun.com/u013595395/article/details/109172429
打点计时:https://blog.youkuaiyun.com/u013595395/article/details/108763819
序号:https://blog.youkuaiyun.com/u013595395/article/details/108740323