如何在Python中按每10个文件为一组批量处理CSV文件
Python批量处理CSV文件:每10个文件为一组的高效分组方法

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
本文详细讲解在Google Colab环境中,对有序命名的CSV文件(如M0000.csv至M0099.csv)进行智能分块处理的完整方案。通过Python代码实现每10个文件自动归为一组,读取全部文本内容并构建结构化数据容器,提升批量文件处理效率。
在进行大规模数据文件处理时,经常需要对有序文件进行分组批量操作。例如,当我们拥有从M0000.csv到M0099.csv共计100个CSV文件时,需要将它们按照每10个文件分为一组,分别读取每组中所有文件的文本内容。最终目标是构建一个名为all_text的Python列表,其中包含10个子列表,每个子列表存储对应文件组的全部文本数据。
这个需求看似简单,但实现时有一个关键点需要注意:真正的“每10个文件分组处理”需要基于顺序分组逻辑,而非简单的条件触发。初学者可能会考虑使用文件序号取模运算(如filenumber % 10 == 0),但这只能在第10、20、30等文件处触发操作,无法优雅地构建出结构清晰的分组容器。更专业、可读性更高的方法是利用整数除法运算确定每个文件所属的组别索引,并动态将其内容添加到对应的子列表中。
以下是为Google Colab和Google Drive环境设计的完整、可直接运行的Python解决方案:
import glob
import pandas as pd
dir_path = 'drive/My Drive/Tri/'
all_text = [] # 最终结构:all_text[i] 是第i组(共10组)的文本列表
# 按文件名排序确保M0000.csv, M0001.csv, ..., M0099.csv顺序正确
file_list = sorted(glob.glob(dir_path + "M*.csv"))
# 遍历所有匹配文件,按每10个一组组织
for idx, file in enumerate(file_list):
# 计算当前文件属于第几组(0-indexed:0~9)
group_idx = idx // 10
# 确保 all_text 至少有 group_idx + 1 个空列表
if len(all_text) <= group_idx:
all_text.append([])
print(f"Processing {file} → Group {group_idx} (file #{idx + 1})")
try:
# 读取CSV文件全部行作为纯文本(忽略列解析,适配fwf格式)
df = pd.read_fwf(file, header=None, on_bad_lines='skip', delimiter="\n")
# 提取每行文本(去除NaN和空白),转为字符串列表
texts_in_file = [str(row.iloc[0]).strip() for _, row in df.iterrows() if not pd.isna(row.iloc[0])]
all_text[group_idx].extend(texts_in_file)
except Exception as e:
print(f"⚠️ Warning: Failed to process {file}: {e}")
# 验证结果
print(f"\n✅ Done! Generated {len(all_text)} groups.")
for i, group in enumerate(all_text):
print(f"Group {i}: {len(group)} text lines (files {i*10}–{i*10+9})")
这段Python代码包含了多个值得深入理解的技术要点和最佳实践:
核心逻辑解析与优化建议
- 分组核心算法:
idx // 10是实现文件分组的关键表达式。它确保序号0–9的文件归入第0组,10–19归入第1组,依此类推,90–99归入第9组。这种整除运算完美实现了10组文件的结构化划分,逻辑清晰且执行高效。 - 动态列表管理:代码采用动态扩展策略,而非预先分配固定大小的列表。通过判断
all_text长度并适时添加新的空子列表,既避免了内存浪费,也防止了因文件数量变化可能导致的索引越界错误,增强了代码的健壮性。 - 文本读取策略:使用
pd.read_fwf(..., delimiter="\n")方法读取文件,将每一行视为独立的文本单元。这种方式特别适合固定宽度格式或需要保留原始行结构的纯文本内容,完全符合“保存所有文本”的业务需求。 - 边界情况处理:如果实际文件数量不足100个,建议在循环开始前使用
file_list = file_list[:100]进行截断操作,确保最后一组文件结构的完整性,避免因文件缺失导致的数据分组异常。 - 环境配置指引:在Google Colab中运行前,需要先挂载Google Drive,执行
from google.colab import drive; drive.mount('/content/drive')命令,确保文件路径访问权限正确配置。 - 性能优化方案:如果处理超大文件或追求极致性能,可以考虑使用Python内置的
open()函数配合逐行读取,替代pandas的DataFrame操作,这样可以显著减少内存开销并提升处理速度。
综上所述,这个Python批量处理CSV文件的方案结构清晰、鲁棒性强,不仅严格满足了all_text[0]到all_text[9]的索引需求,也为后续数据处理流程奠定了良好基础——无论是进行文本清洗、自然语言处理、特征向量化,还是批量保存操作,都可以方便地对每组文本数据进行统一处理。
立即学习“Python免费学习笔记(深入)”;
相关攻略
Python如何高效创建指定形状与填充值的NumPy数组:np full函数详解 在Python数据科学和数值计算中,经常需要快速生成特定形状且所有元素均为相同值的NumPy数组。np full函数正是解决这一需求的理想工具。相比np ones或np zeros只能填充0或1,np full提供了更
Python中如何微调大语言模型LLaMA:借助PEFT框架与LoRA低秩自适应技术 说到微调LLaMA这类大模型,直接上全参数训练?这可不是个好主意。显存压力大、训练速度慢,还容易陷入过拟合的泥潭。目前来看,PEFT框架配合LoRA技术,算是最为可行的轻量化方案。但问题的关键,从来不是“代码能不能
Flask 2 x 的 async 视图仅在 ASGI 服务器(如 Uvicorn)下有效,WSGI 模式不支持异步;需用 uvicorn 启动、使用异步库、避免阻塞调用,并确保中间件与扩展兼容 async。 Flask 2 x 原生支持 async 视图,但不等于自动支持 asyncio 库的任意
Python大数据量训练报MemoryError怎么搞_设置批处理或启用稀疏矩阵 训练时直接报 MemoryError,说明数据一次性加载进内存撑爆了 这通常不是模型本身的问题,而是数据处理流程的“内存墙”。Python的默认习惯,比如把整个数据集(无论是numpy ndarray还是pandas
Python异步数据清洗pipeline实战指南:基于协程的高效任务流设计 asyncio run() 在已有事件循环环境中的正确调用方式 许多开发者在初次构建异步数据清洗流程时,会习惯性地使用 asyncio run(clean_pipeline()) 来启动协程任务。然而当代码运行在Jupyte
热门专题
热门推荐
听音乐效果好的蓝牙耳机,这三款是绕不开的优选 想在几百元预算内,找到听音乐真正够味的蓝牙耳机?经过多轮真实听感对比,南卡OE Mix2、西圣A VA2 Pro与OPPO Enco Free4这三款的表现,确实能让人眼前一亮。它们并非简单的参数堆砌,而是在低频下潜、人声密度和高频延展性上,都做到了同价
小米空气净化器手动连接时指示灯不亮,通常属于非正常状态,需结合具体使用场景判断 遇到小米空气净化器手动连接时指示灯不亮,这通常不是一个正常状态,得结合具体使用场景来判断。根据小米官方的技术文档以及像4 Pro、4 Lite等多款机型用户手册的说明,设备在通电待机或手动模式下,主控面板的状态指示灯(通
iPhone 14 Pro录屏功能找不到?问题根源与完整解决方案 很多iPhone 14 Pro用户发现找不到录屏按钮,第一反应往往是:“是不是系统版本太旧了?”其实不然。绝大多数情况下,这并非系统问题,而是屏幕录制这个“开关”还没被放进你的“工具箱”——也就是控制中心里。要知道,从iOS 11开始
在数字货币市场,用有限本金追求快速增值,是许多参与者的共同目标。以5000元为起点,在一个月内实现20万收益,这个看似遥不可及的数字,通过精密的波段操作策略,在理论上被赋予了可能性。 这要求交易者具备猎豹般的敏锐、狙击手般的精准,以及对市场情绪的深刻洞察。操作的核心逻辑在于捕捉高波动性市场中的短期价
在数字货币的浪潮中,用小额本金实现财富大幅增值的想法吸引了众多参与者。从2000元到50万,这并非一个简单的数字游戏,而是一条布满挑战与机遇的道路。它要求交易者具备极高的专业素养、心理素质和对市场的深刻洞察。下文将探讨在这一过程中,短线交易者可能遵循的一些操作法则和策略思路。 资金管理:生存的第一道





