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

Python新手求助:按文件名规则批量合并文件夹内的文本文件

合并成对文本文件的Python解决方案

嘿,作为Python新手能自己生成这么多文件已经超棒啦!针对你要合并A/B开头的成对文件需求,我整理了一套简单易懂的实现方案,咱们一步步来:

核心思路

  • 先定位到output文件夹,获取所有符合格式的文本文件
  • 把文件名拆分成前缀(A/B)和后缀(比如_0.20_1_.txt),将后缀相同的文件归为一组
  • 遍历每一组,读取两个文件的内容并合并,写入新的merged_A_B_xxx.txt格式文件

完整代码实现

import os

# 定义目标文件夹路径
folder_path = "output"

# 用来存储分组:key是共同后缀,value是对应的A/B文件路径
file_groups = {}

# 遍历文件夹里的所有文件
for filename in os.listdir(folder_path):
    # 只处理txt文件
    if filename.endswith(".txt"):
        # 拆分文件名:比如把"A_0.20_1_.txt"拆成前缀"A"和后缀"_0.20_1_.txt"
        # 用split("_", 1)确保只拆分第一个下划线,避免影响后面的命名部分
        prefix, suffix = filename.split("_", 1)
        # 如果后缀不在字典里,就创建一个空列表
        if suffix not in file_groups:
            file_groups[suffix] = []
        # 把当前文件的完整路径加入对应组
        file_groups[suffix].append(os.path.join(folder_path, filename))

# 遍历每个分组进行合并
for suffix, file_paths in file_groups.items():
    # 确保每组有且只有两个文件(A和B开头的)
    if len(file_paths) == 2:
        # 筛选出A和B开头的文件路径
        a_file = next(f for f in file_paths if os.path.basename(f).startswith("A_"))
        b_file = next(f for f in file_paths if os.path.basename(f).startswith("B_"))
        
        # 读取两个文件的内容
        with open(a_file, "r", encoding="utf-8") as f_a:
            content_a = f_a.read()
        with open(b_file, "r", encoding="utf-8") as f_b:
            content_b = f_b.read()
        
        # 合并内容(这里默认A在前B在后,中间加换行;如果需要按行对应合并可以调整)
        merged_content = content_a + "\n" + content_b
        
        # 生成合并后的文件名
        merged_filename = f"merged_A_B_{suffix}"
        merged_file_path = os.path.join(folder_path, merged_filename)
        
        # 写入合并后的文件
        with open(merged_file_path, "w", encoding="utf-8") as f_merged:
            f_merged.write(merged_content)
        
        print(f"已完成合并:{merged_filename}")
    else:
        # 处理分组文件数量不对的情况,给新手提示
        print(f"警告:后缀为{suffix}的文件有{len(file_paths)}个,无法完成合并,请检查文件命名!")

代码关键点说明

  • 文件分组逻辑:用split("_", 1)精准拆分文件名,不管后面的参数怎么变,只要后缀相同就会被分到一组,适配你的命名规则
  • 编码处理:打开文件时指定encoding="utf-8",避免不同系统下的字符乱码问题
  • 异常提示:如果某组文件数量不是2个(比如只有A没有B,或者重复文件),会给出明确警告,方便你排查问题
  • 合并灵活性:示例里是直接拼接内容,如果你需要按行对应合并(比如A的第1行和B的第1行放在同一行),可以随时告诉我调整代码

运行方式

把这段代码保存成merge_files.py,放在和output文件夹同级的目录下,直接运行就能自动完成所有成对文件的合并啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:26:47