如何按每5条记录拆分文件生成新文件,求Unix或Python简便实现方法
文件按每5条拆分的实现方案
方案1:Unix 命令实现(无需额外写复杂逻辑)
方法A:使用awk(全平台兼容)
直接运行以下命令即可完成拆分:
awk 'NR%5==1 {output_file="abc"++idx".txt"} {print > output_file}' demo.txt
逻辑说明:
- 行数为1、6、11…的时候,自动生成新的输出文件名
abc1.txt/abc2.txt/abc3.txt - 所有行自动写入当前生效的输出文件,不足5行的剩余内容自动生成单独文件
方法B:使用split命令(GNU环境通用,比如Linux)
split -l 5 -d --numeric-suffixes=1 --additional-suffix=.txt demo.txt abc
参数说明:
-l 5:指定每5行拆分一个文件-d:使用数字作为文件后缀--numeric-suffixes=1:数字后缀从1开始计数--additional-suffix=.txt:统一添加.txt后缀
方案2:Python 实现(可自定义扩展逻辑)
如果需要后续增加自定义处理逻辑,可以用以下Python代码实现:
# 可按需调整配置 INPUT_PATH = "demo.txt" LINES_PER_FILE = 5 OUTPUT_PREFIX = "abc" OUTPUT_SUFFIX = ".txt" file_index = 1 temp_lines = [] with open(INPUT_PATH, 'r', encoding='utf-8') as in_f: for line in in_f: temp_lines.append(line) if len(temp_lines) == LINES_PER_FILE: # 攒够指定行数写入新文件 with open(f"{OUTPUT_PREFIX}{file_index}{OUTPUT_SUFFIX}", 'w', encoding='utf-8') as out_f: out_f.writelines(temp_lines) temp_lines = [] file_index += 1 # 处理最后剩余不足指定行数的内容 if temp_lines: with open(f"{OUTPUT_PREFIX}{file_index}{OUTPUT_SUFFIX}", 'w', encoding='utf-8') as out_f: out_f.writelines(temp_lines)
内容的提问来源于stack exchange,提问作者codeholic24
相关产品推荐
相关产品推荐

