Python如何拆分TXT文件并为每个子文件保留指定行数表头
拆分文件并为所有子文件添加固定表头的实现方案
核心逻辑是提前提取原文件前三行作为公共表头,每个新子文件生成时先写入表头,再写入对应分片的内容即可,以下是两种适用不同场景的实现:
方案1:小文件场景(一次性读入内存,逻辑简洁)
# 配置参数 header_lines_count = 3 # 固定表头行数 lines_per_file = 2 # 每个子文件除表头外的内容行数 header = [] # 读取表头和所有内容 with open('splitfile.txt', 'r', encoding='utf-8') as f: # 先读前三行表头 for _ in range(header_lines_count): header.append(f.readline()) # 读取剩余所有待拆分内容 content_lines = f.readlines() # 按指定行数拆分内容并生成子文件 for i in range(0, len(content_lines), lines_per_file): # 截取当前分片内容 chunk = content_lines[i:i+lines_per_file] # 文件名保持和原有逻辑一致 sfilename = f'step_{i + lines_per_file}.txt' with open(sfilename, 'w', encoding='utf-8') as s: # 先写表头再写分片内容 s.writelines(header) s.writelines(chunk)
方案2:大文件场景(逐行读取,低内存占用)
如果待拆分的文件体积很大,一次性读入内存会占用过多资源,可以用逐行处理的版本:
header_lines_count = 3 lines_per_file = 2 header = [] current_chunk = [] file_index = 1 with open('splitfile.txt', 'r', encoding='utf-8') as split: # 先提取表头 for _ in range(header_lines_count): header.append(split.readline()) # 逐行处理后续内容 for line in split: current_chunk.append(line) # 攒够指定行数就生成新文件 if len(current_chunk) == lines_per_file: sfilename = f'step_{file_index * lines_per_file}.txt' with open(sfilename, 'w', encoding='utf-8') as s: s.writelines(header) s.writelines(current_chunk) current_chunk = [] file_index += 1 # 处理最后不足指定行数的剩余内容(如果存在) if current_chunk: sfilename = f'step_{file_index * lines_per_file}.txt' with open(sfilename, 'w', encoding='utf-8') as s: s.writelines(header) s.writelines(current_chunk)
内容的提问来源于stack exchange,提问作者testFreak
相关产品推荐
相关产品推荐

