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/8/3 7:03:36 阅读更多 →
Win10内核运行WinXP界面的技术实现与体验

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

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

2026/8/4 12:59:26 阅读更多 →
Java安全框架选型:SpringSecurity、Shiro与sa-token对比

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

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

2026/8/4 17:13:07 阅读更多 →

最新新闻

零基础3小时上线AI漫画头像服务(含Stable Diffusion+ControlNet全流程配置包)

零基础3小时上线AI漫画头像服务(含Stable Diffusion+ControlNet全流程配置包)

更多请点击: https://intelliparadigm.com 第一章:AI生成漫画头像 AI生成漫画头像正成为数字内容创作的重要入口,依托扩散模型(Diffusion Models)与风格迁移技术,用户仅需提供简短文字描述或真实人像照片&…

2026/8/4 18:12:14 阅读更多 →
为什么你的AI纠错总漏掉主谓一致?揭秘Transformer注意力权重在语法边界识别中的失效场景

为什么你的AI纠错总漏掉主谓一致?揭秘Transformer注意力权重在语法边界识别中的失效场景

更多请点击: https://codechina.net 第一章:Shell脚本的基本语法和命令 Shell 脚本是 Linux/Unix 系统自动化任务的核心工具,以解释执行方式运行,无需编译。其本质是一系列 Shell 命令的有序集合,通过 #!/bin/bash&am…

2026/8/4 18:12:14 阅读更多 →
业务问数为什么总卡在IT排期:跨系统查询从提需求到自然语言问数

业务问数为什么总卡在IT排期:跨系统查询从提需求到自然语言问数

# 业务问数为什么总卡在IT排期:跨系统查询从提需求到自然语言问数## 一、一张报表等一周,问题出在哪很多企业的业务主管都有过类似经历:周会上老板问"这个客户今年的采购额是多少、还欠我们多少钱",你回去找数据&#x…

2026/8/4 18:12:14 阅读更多 →
基于自正交拉丁方的图像加密算法与Matlab实现

基于自正交拉丁方的图像加密算法与Matlab实现

1. 项目背景与核心价值在数字图像安全传输领域,加密技术始终是保护敏感视觉信息的关键防线。传统加密算法如AES、DES虽然成熟,但针对图像数据的特殊结构(高冗余度、大数据量)往往存在计算效率低或视觉安全性不足的问题。自正交拉丁…

2026/8/4 18:12:14 阅读更多 →
如何安全使用YimMenu:GTA5终极防护菜单完全指南

如何安全使用YimMenu:GTA5终极防护菜单完全指南

如何安全使用YimMenu:GTA5终极防护菜单完全指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …

2026/8/4 18:12:14 阅读更多 →
目前知名的余压阀厂家名声

目前知名的余压阀厂家名声

最近有几个暖通工程的朋友跟我吐槽,他们被当“韭菜”了——项目还没验收,余压阀就变形卡死,消防验收过不了,要不是靠关系托人,罚款加返工费都得几十万打水漂。而现实是,在各种工程回扣、低价中标、层层转包…

2026/8/4 18:11:14 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →