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

如何高效合并多个文本文件指定行并添加文件名至输出文件?

批量提取文本文件指定行并生成Excel兼容文件的优化方案

需求说明

有数百个结构、行数一致的test*.txt文本文件,需提取每个文件的第20-25行,存入可在Excel中编辑的文本文件,同时在对应数据旁或上方标注文件名。原手动编写的重复代码效率极低,需要优化。

原代码问题

原代码通过手动逐个处理文件,存在以下问题:

  • 重复代码冗余,新增文件需手动复制修改代码
  • 使用readlines()读取整个文件到内存,处理大量文件时内存占用高
  • 未使用上下文管理器,存在文件未正确关闭的风险
file1 = open("test01.txt", "r")
content = file1.readlines()
file1 = open("values.txt","w")
file1.write("test01.txt" + "\n")
file1.writelines(content[33:36])
file1.close()

file1 = open("test02.txt", "r")
content = file1.readlines()
#Append-adds at last
file1 = open("values.txt","a")#append mode
file1.write("test02.txt" + "\n")
file1.writelines(content[33:36])
file1.close()

file1 = open("test03.txt", "r")
content = file1.readlines()
#Append-adds at last
file1 = open("values.txt","a")#append mode
file1.write("test03.txt" + "\n")
file1.writelines(content[33:36])
file1.close()

优化方案

使用glob批量匹配文件,结合上下文管理器和逐行读取,生成CSV格式文件(天然兼容Excel):

import glob

# 定义要提取的行范围(第20-25行,Python索引从0开始,对应19到24)
start_line = 19
end_line = 24

# 打开输出文件,用CSV格式方便Excel编辑
with open("output.csv", "w", encoding="utf-8") as out_file:
    # 遍历所有test*.txt文件
    for file_path in glob.glob("test*.txt"):
        # 写入文件名作为标识
        out_file.write(f"文件名: {file_path}\n")
        # 逐行读取源文件,只保留目标行
        with open(file_path, "r", encoding="utf-8") as in_file:
            for line_num, line in enumerate(in_file):
                if start_line <= line_num <= end_line:
                    # 写入目标行,保留原换行符
                    out_file.write(line)
            # 写入空行分隔不同文件的数据
            out_file.write("\n")

代码说明

  • glob.glob("test*.txt"):自动匹配所有符合命名规则的文件,无需手动逐个指定
  • 上下文管理器with:自动处理文件打开/关闭,避免资源泄漏
  • 逐行读取文件:仅读取需要的行,大幅减少内存占用,适合处理大量文件
  • 输出为CSV格式:Excel可直接打开编辑,若需要更规范的表格结构,可修改为每行包含文件名和对应行内容(例如用逗号分隔)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:40:26