如何按每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
相关产品推荐
相关产品推荐

