python3 分割文件,将大文件按行分割成最大某M的小文件
第一次运行自动生成配置文件第二次运行自动读取配置文件ai优化import os, json, platform from uuid import uuid1 from u_工具 import 配置, 打点, 计时, 序号, 序号_重置 print(———— 开始 ————) 打点() # region 1.用来配置的变量 config { 输入目录: ./a_输入, 输出目录: ./b_输出, 小文件大小: 1500 # 单位 M } config_filePath ./配置文件2.json 关联表 { 输入目录: 输入目录, 输出目录: 输出目录, 小文件大小: 小文件大小, } if os.path.exists(config_filePath): 配置.加载(config_filePath).关联(config, 关联表).重载() else: # 修复正确创建配置文件所在目录 配置目录 os.path.dirname(config_filePath) if 配置目录 and not os.path.exists(配置目录): os.makedirs(配置目录) with open(config_filePath, w, encodingutf-8) as f: json.dump(config, f, ensure_asciiFalse, indent2) # endregion # region 2.预处理 # 调整小文件大小 扩充到字节 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[输入目录]): # 修复用os.path.join拼接路径用isfile精准筛选文件 待去重文件列表 [ os.path.join(config[输入目录], 文件名) for 文件名 in os.listdir(config[输入目录]) if os.path.isfile(os.path.join(config[输入目录], 文件名)) ] else: 待去重文件列表 [config[输入目录]] print(f总共{len(待去重文件列表)}个文件) print(待去重文件列表) 换行符 b\n if platform.system().lower() windows: 换行符 b\r\n # endregion # region 3.实际处理 # (1)分割大文件 打点() 待排序文件列表 [] for 源文件路径 in 待去重文件列表: 序号_重置(1) 文件名前缀 os.path.splitext(os.path.basename(源文件路径))[0] 缓冲区 b # 每个文件独立缓冲区避免串扰 with open(源文件路径, rb) as f: while True: # 读取一块数据 块数据 f.read(config[小文件大小]) if not 块数据: # 文件读取完毕退出循环处理剩余缓冲区 break 缓冲区 块数据 # 缓冲区大小达到阈值时进行分片切割 while len(缓冲区) config[小文件大小]: # 找到最后一个换行符的位置保证行完整 最后换行位置 缓冲区.rfind(换行符) if 最后换行位置 -1: # 极端情况单行数据超过分片大小强行切割避免卡死 要写入内容 缓冲区 缓冲区 b else: # 切割包含换行符的部分写入剩余部分留在缓冲区 换行长度 len(换行符) 要写入内容 缓冲区[:最后换行位置 换行长度] 缓冲区 缓冲区[最后换行位置 换行长度:] # 写入分片文件使用wb模式新建文件 分片路径 os.path.join( config[输出目录], f{文件名前缀}_{序号(1).zfill(2)}_{uuid1()}.txt ) with open(分片路径, wb) as ff: ff.write(要写入内容) 待排序文件列表.append(分片路径) # 处理最后剩余的缓冲区内容 if 缓冲区: 分片路径 os.path.join( config[输出目录], f{文件名前缀}_{序号(1).zfill(2)}_{uuid1()}.txt ) with open(分片路径, wb) as ff: ff.write(缓冲区) 待排序文件列表.append(分片路径) # 释放大变量内存 缓冲区, 块数据, 要写入内容 None, None, None 打点() print(f\n分割大文件完成共耗时{计时()}) print(f\n输出目录{config[输出目录]}) # endregion 打点() print(f\n\n总耗时{计时(0)}) print(———— 结束 ————) print() os.system(pause)有问题的代码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, encodingutf-8) as f: json.dump(config, f, ensure_asciiFalse, indent2) # 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)工具类配置python3 读取配置文件重载配置文件_使用( )函数可以将配置文件重置。-CSDN博客打点计时简易计时工具-CSDN博客序号python3 随机延时 线程序号_cmd. 随机延时-CSDN博客

相关新闻

Local RAG社区贡献指南:如何参与开源项目开发

Local RAG社区贡献指南:如何参与开源项目开发

Local RAG社区贡献指南:如何参与开源项目开发 【免费下载链接】local-rag Ingest files for retrieval augmented generation (RAG) with open-source Large Language Models (LLMs), all without 3rd parties or sensitive data leaving your network. 项目地址:…

2026/10/19 14:45:52 阅读更多 →
Win10内核运行WinXP界面的技术实现与体验

Win10内核运行WinXP界面的技术实现与体验

1. 项目背景:当Win10内核遇上WinXP情怀 最近在技术圈流传着一个3.7GB的"魔改版WinXP",这个项目最吸引人的地方在于它采用了Win10内核却完整保留了WinXP的经典界面和操作体验。作为一名从Win98时代就开始折腾系统的老玩家,我第一时间…

2026/10/19 22:16:16 阅读更多 →
Java安全框架选型:SpringSecurity、Shiro与sa-token对比

Java安全框架选型:SpringSecurity、Shiro与sa-token对比

1. 安全框架选型困境:为什么这是个难题? 在Java生态中做权限控制就像装修时选门锁——用弹簧锁(SpringSecurity)还是智能锁(Shiro),或者新兴的指纹锁(sa-token)&#xff…

2026/10/18 13:34:41 阅读更多 →

最新新闻

Frida动态插桩实战:从Hook到内存扫描的完整指南

Frida动态插桩实战:从Hook到内存扫描的完整指南

做移动端安全测试这些年,我见过太多人把大量时间花在反编译和读汇编上,遇到加了壳的应用就只能干瞪眼。后来我开始把 Frida 动态插桩作为主要分析手段,很多原本要折腾半天的任务,现在几分钟就能拿到结果。这篇文章我会从最基础的 …

2026/10/20 14:48:08 阅读更多 →
C++实战:用VS编写贪吃蛇游戏的核心逻辑与完整源码

C++实战:用VS编写贪吃蛇游戏的核心逻辑与完整源码

用VS和C写一个贪吃蛇游戏,听起来很基础,但真做起来,里面藏着不少值得抠的细节。我把完整源码放在下面,你在Visual Studio里新建一个控制台应用,复制进去就能编译运行。对刚学完C语法、想做点东西验证自己的入门者来说&…

2026/10/20 14:48:08 阅读更多 →
工业时序建模:分清机理与机制,才能让模型长出筋骨

工业时序建模:分清机理与机制,才能让模型长出筋骨

1. 先把"机理"这层窗户纸捅破:确定性因果链做工业数据建模这些年,最常碰见的尴尬不是算法调不好,而是开会时一屋子人对着"机理"和"机制"这两个词各说各话。做设备的老师傅嘴里的"机理清楚"&#xff…

2026/10/20 14:48:08 阅读更多 →
机房管理系统落地指南:从SNMP/IPMI选型到告警联动与避坑实践

机房管理系统落地指南:从SNMP/IPMI选型到告警联动与避坑实践

简介:一套面向高校数据库课程设计的机房管理系统完整资料,覆盖机房信息、设备信息、用户信息、预约信息和使用记录等核心业务实体,并针对资源调度、冲突避免与使用分析给出明确的数据组织方案。资源共三个文件,包含两份文档和一份…

2026/10/20 14:48:08 阅读更多 →
融合敏感度先验的条件扩散模型:电阻抗成像重建新思路

融合敏感度先验的条件扩散模型:电阻抗成像重建新思路

最近整理手头的一个电阻抗成像项目代码和实验记录,想把这套技术路线从头到尾理清楚。电阻抗成像(Electrical Impedance Tomography,EIT)本质上就是个逆问题:边界贴电极,注入已知电流,测一组电压…

2026/10/20 14:48:08 阅读更多 →
60次实测:MCP不省上下文,子agent平均省38.1%token增量

60次实测:MCP不省上下文,子agent平均省38.1%token增量

做Agent应用的人,大概都被问过一个问题:接上MCP之后,上下文是不是就能省不少?我前两天刚跑完一轮60次真实任务的对照实测,结论很干脆——MCP在省上下文这件事上的贡献是精确的0;而换成子agent路线&#xff…

2026/10/20 14:46:40 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →