You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将多份文本文件按400行分割?split()方法是否适用?

按行数分割大文本文件的Python实现

关于split()方法的适用性

直接使用字符串的split()方法(如file.read().split('\n'))不适合处理这类大文件场景:

  • 该方法会一次性将整个文件内容加载到内存中,对于行数过万的大文件,会造成极高的内存占用,甚至触发内存不足的问题。
  • 拆分后的行列表还需要额外处理分段逻辑,效率远不如逐行读取的方式。

推荐实现方案

采用逐行读取、累积写入的方式,既能控制内存占用,又能高效完成分割。以下是可直接运行的代码:

import os

def split_file_by_lines(source_file, lines_per_chunk=400):
    # 拆分原文件名与扩展名,用于生成新文件名
    base_name, ext = os.path.splitext(source_file)
    chunk_counter = 1
    current_lines = []

    # 逐行读取源文件
    with open(source_file, 'r', encoding='utf-8') as src:
        for line in src:
            current_lines.append(line)
            # 当累积到指定行数时,写入新文件
            if len(current_lines) == lines_per_chunk:
                chunk_filename = f"{base_name}_{chunk_counter:03d}{ext}"
                with open(chunk_filename, 'w', encoding='utf-8') as chunk:
                    chunk.writelines(current_lines)
                current_lines = []
                chunk_counter += 1
        # 处理剩余不足400行的内容
        if current_lines:
            chunk_filename = f"{base_name}_{chunk_counter:03d}{ext}"
            with open(chunk_filename, 'w', encoding='utf-8') as chunk:
                chunk.writelines(current_lines)

# 遍历目标文件夹下的所有文本文件(可替换为你的文件目录)
target_directory = '.'  # 当前目录,可修改为实际路径
for filename in os.listdir(target_directory):
    # 仅处理txt文件,可根据需求调整扩展名
    if filename.endswith('.txt'):
        full_path = os.path.join(target_directory, filename)
        split_file_by_lines(full_path)

代码说明

  • 内存友好:逐行读取文件,每次仅保留最多400行在内存中,适合处理超大文件。
  • 自动命名:分割后的文件会以原文件名_001.txt、原文件名_002.txt的格式命名,避免覆盖。
  • 扩展性:可通过修改lines_per_chunk参数调整每块的行数,修改endswith('.txt')适配其他文本格式。

内容的提问来源于stack exchange,提问作者dmdendd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:10:29