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

如何按每n行拆分文件?Python实现按指定行数拆分文本文件

Python按固定N行批量读取文件的实现方法

你可以通过迭代器分片的方式实现按固定行数批量读取,不需要手动逐行计数,同时支持大文件流式处理,不会一次性加载整个文件到内存。

方法1:itertools.islice 实现(兼容不足N行的末尾内容)

这是适用性最广的写法,文件总行数不是N的整数倍时,最后不足N行的内容也会正常返回:

from itertools import islice

def read_in_batches(file_path: str, batch_size: int):
    with open(file_path, 'r', encoding='utf-8') as f:
        while True:
            # 每次读取指定行数的内容
            current_batch = list(islice(f, batch_size))
            # 读取到文件末尾时结束循环
            if not current_batch:
                break
            yield current_batch

调用示例(按2行一组遍历,输出你需要的格式):

for group in read_in_batches('你的文件路径.txt', 2):
    # 拼接组内行内容并打印,组与组之间自动空行分隔
    print(''.join(group))

方法2:zip迭代器打包(简洁写法)

如果确认文件总行数是N的整数倍,可以用更简洁的迭代器打包写法:

batch_size = 2
with open('你的文件路径.txt', 'r', encoding='utf-8') as f:
    for group in zip(*[iter(f)] * batch_size):
        print(''.join(group))

如果需要保留最后不足N行的内容,可以替换为itertools.zip_longest:

from itertools import zip_longest

batch_size = 2
with open('你的文件路径.txt', 'r', encoding='utf-8') as f:
    for group in zip_longest(*[iter(f)] * batch_size, fillvalue=''):
        print(''.join(group).rstrip('\n'))

两种方法运行你的示例文件后,输出效果完全符合要求:

line1
line2

line3
line4

line5
line6

line7
line8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 12:54:03