当前位置: 代码网 > it编程>前端脚本>Python > Python轻松合并多个TXT文档的实战指南

Python轻松合并多个TXT文档的实战指南

2025年12月08日 Python 我要评论
在日常工作和学习中,我们经常会遇到需要合并多个 txt 文档的场景。比如,整理分散在不同文档中的实验数据、汇总多份日志文件、整合多篇文档的内容等。如果手动复制粘贴,不仅效率低下,还容易出现遗漏或错误。

在日常工作和学习中,我们经常会遇到需要合并多个 txt 文档的场景。比如,整理分散在不同文档中的实验数据、汇总多份日志文件、整合多篇文档的内容等。如果手动复制粘贴,不仅效率低下,还容易出现遗漏或错误。而使用 python,只需几行代码,就能快速、准确地完成 txt 文档的合并操作。本文将详细介绍两种常用的 python 合并 txt 文档的方法,无论你是 python 新手还是有一定基础的开发者,都能轻松掌握。

一、为什么选择 python 合并 txt 文档?

在介绍具体方法之前,先聊聊为什么推荐用 python 来做这件事。首先,python 语法简洁易懂,即使是零基础的人,花几分钟就能看懂核心逻辑;其次,python 的标准库中包含了处理文件操作的模块(如os、glob),无需额外安装第三方库,开箱即用;最后,python 的灵活性强,不仅能实现简单的文档合并,还能根据需求添加过滤条件、格式处理等功能,满足多样化的需求。

二、方法一:使用os模块遍历文件夹合并

这种方法适用于需要合并某个文件夹下所有 txt 文档的场景,核心思路是先遍历文件夹找到所有 txt 文件,再逐一读取内容并写入目标文档。

  1. 核心原理
  2. os.listdir():列出指定文件夹下的所有文件和子文件夹;
    筛选后缀为.txt的文件,排除非 txt 格式的文件;
    用with语句打开文件(自动处理文件关闭,避免资源泄漏),先读取每个 txt 文件的内容,再写入到合并后的目标文件中。
  3. 完整代码
import os

def merge_txt_files(folder_path, output_file):
    """
    合并指定文件夹下的所有txt文件到目标文件
    :param folder_path: 存放txt文件的文件夹路径
    :param output_file: 合并后的目标文件路径(如"merged.txt")
    """
    # 打开目标文件,以追加模式(a)写入,编码设为utf-8避免中文乱码
    with open(output_file, 'a', encoding='utf-8') as out_f:
        # 遍历文件夹下的所有文件
        for file_name in os.listdir(folder_path):
            # 筛选出后缀为.txt的文件
            if file_name.endswith('.txt'www.tolu120.com  m.tolu120.com  zuqiu.tolu120.com  web.tolu120.com  gov.a.tolu120.com):
                # 拼接完整的文件路径
                file_path = os.path.join(folder_path, file_name)
                # 读取当前txt文件的内容
                with open(file_path, 'r', encoding='utf-8') as in_f:
                    content = in_f.read()
                    # 将内容写入目标文件
                    out_f.write(content)
                    # 可选:在每个文件内容后添加换行符,避免内容连在一起
                    out_f.write('\n\n')
        print(f"合并完成!合并后的文件已保存至:{output_file}")

示例:合并"test_txt"文件夹下的所有txt,输出到"merged_all.txt"

merge_txt_files(folder_path=“test_txt”, output_file=“merged_all.txt”)

  1. 操作步骤
    准备文件夹:创建一个文件夹(如test_txt),将需要合并的所有 txt 文档放入其中;
    修改路径:将代码中的folder_path改为你的 txt 文件夹路径(相对路径或绝对路径均可,绝对路径如"c:/users/xxx/documents/test_txt");
    运行代码:执行 python 脚本,合并后的文件会自动生成在指定路径(如merged_all.txt)。
  2. 代码说明
    encoding=‘utf-8’:必须指定编码格式,否则读取或写入中文时可能出现乱码;
    ‘a’模式(追加模式):如果目标文件已存在,新内容会追加到文件末尾;若需覆盖原有内容,可改为’w’模式(写入模式);
    可选的out_f.write(’\n\n’):在每个文件内容后添加两个换行符,让不同文档的内容分隔更清晰,根据需求可删除。

三、方法二:使用glob模块精准匹配文件

  1. 如果不需要合并文件夹下所有 txt,而是需要按特定规则筛选(如文件名包含 “数据”“2024” 等关键词),推荐使用glob模块。它支持通配符匹配,能更灵活地选择目标文件。
  2. 核心原理
    glob.glob():根据通配符模式匹配文件路径,返回符合条件的文件列表;
    支持的通配符:(匹配任意字符)、?(匹配单个字符)、[](匹配指定范围内的字符),例如"test_txt/2024.txt"可匹配test_txt文件夹下所有以 “2024” 开头的 txt 文件。
  3. 完整代码
import glob

def merge_specific_txt(pattern, output_file):
    """
    合并符合通配符模式的txt文件到目标文件
    :param pattern: 通配符模式(如"test_txt/2024*.txt")
    :param output_file: 合并后的目标文件路径
    """
    # 找到所有符合模式的txt文件
    txt_files = glob.glob(zhibo.kaojiaxiao.com  zb.kaojiaxiao.com  tsl.kaojiaxiao.com  tv.kaojiaxiao.com  pattern, recursive=false)
    if not txt_files:
        print("未找到符合条件的txt文件,请检查路径和模式是否正确!")
        return
    
    # 写入目标文件
    with open(output_file, 'w', encoding='utf-8') as out_f:
        for file_path in txt_files:
            # 获取文件名(用于添加标识,可选)
            file_name = file_path.split('\\')[-1]  #  windows系统用'\\',linux/mac用'/'
            # 写入文件名作为标识(方便区分不同文件的内容)
            out_f.write(f"=== 开始:{file_name} ===\n")
            # 读取并写入文件内容
            with open(share.kaojiaxiao.com  fxfdj.com  www.fxfdj.com  m.fxfdj.com  wap.fxfdj.comfile_path, 'r', encoding='utf-8') as in_f:
                out_f.write(in_f.read())
            # 写入结束标识



            out_f.write(f"\n=== 结束:{file_name} ===\n\n")
        print(f"合并完成!共合并{len(txt_files)}个txt文件,结果保存至:{output_file}")

示例1:合并"test_txt"文件夹下所有以"2024"开头的txt,输出到"merged_2024.txt"

merge_specific_txt(pattern="test_txt/2024*.txt", output_file="merged_2024.txt")

示例2:合并"test_txt"文件夹下所有包含"数据"的txt,输出到"merged_data.txt"

# merge_specific_txt(pattern="test_txt/*数据*.txt", output_file="merged_data.txt")

常见匹配模式示例

通配符模式

匹配结果

  • test_txt/.txt
  • test_txt下所有 txt 文件(同方法一效果)
  • test_txt/2024.txt
  • test_txt下以 “2024” 开头的 txt 文件
  • test_txt/数据.txt
  • test_txt下文件名包含 “数据” 的 txt 文件
  • test_txt/?.txt
  • test_txt下文件名只有 1 个字符的 txt 文件

优势说明

相比os模块,glob的优势在于精准筛选:当需要按文件名规则合并部分 txt 时,无需手动判断,直接通过通配符即可实现,代码更简洁,扩展性更强。

四、注意事项:避免踩坑的关键细节

路径问题:

相对路径:代码文件与 txt 文件夹在同一目录时,直接写文件夹名(如"test_txt")即可;
绝对路径:若不在同一目录,需写完整路径(windows 用"c:/a/b",linux/mac 用"/home/a/b"),注意 windows 路径中的反斜杠需写为\或用原始字符串(如r"c:\a\b")。

编码一致性:

确保所有待合并的 txt 文件编码格式一致(如均为utf-8或gbk),若部分文件是gbk编码,需将代码中的encoding='utf-8’改为encoding=‘gbk’,否则会报错 “unicodedecodeerror”。

大文件处理:

若待合并的 txt 文件较大(如超过 1gb),不建议用read()一次性读取全部内容(可能占用过多内存),可改为按行读取:

# 大文件按行读取的写法
with open(file_path, 'r', encoding='utf-8') as in_f:
    for line in in_f:
        out_f.write(line)

文件覆盖风险:

若目标文件(output_file)已存在,使用’w’模式会直接覆盖原有内容,建议先检查文件是否存在,或用’a’模式追加(需注意是否需要去重)。

五、扩展需求:让合并功能更强大

除了基础的合并功能,我们还可以根据实际需求扩展代码,比如:

按文件修改时间排序合并:

在读取文件前,按文件的修改时间对 txt 文件列表排序,确保合并顺序符合时间逻辑:

# 按修改时间排序(最新修改的文件在后)
txt_files.sort(key=lambda x: os.path.getmtime(x))

去除重复内容:
若多个 txt 文件有重复内容,可通过集合(set)去重(注意:集合会打乱顺序,需根据需求判断是否适用):
# 去重示例(适用于无顺序要求的场景)
all_content = set()
for file_path in txt_files:
    with open( vip.fxfdj.com  zhibo.fxfdj.com  zb.fxfdj.com  tsl.fxfdj.com  tv.fxfdj.com  share.fxfdj.com  tolu120.com file_path, 'r', encoding='utf-8') as in_f:
        all_content.update(in_f.readlines())
# 将去重后的内容写入目标文件
with open(output_file, 'w', encoding='utf-8') as out_f:
    out_f.writelines(all_content)

批量处理子文件夹:

若 txt 文件分散在多个子文件夹中,可在glob.glob()中设置recursive=true,并使用**匹配所有子文件夹:

匹配"test_txt"及其所有子文件夹下的txt文件

txt_files = glob.glob(“test_txt/**/*.txt”, recursive=true)

六、总结

python 合并 txt 文档的核心是文件读取与写入,通过os或glob模块实现文件筛选,再结合with语句安全操作文件。两种方法各有优势:

os模块:适合合并指定文件夹下的所有 txt,代码直观;
glob模块:适合按文件名规则筛选 txt,灵活性更高。

无论你是需要快速合并几份文档,还是批量处理成百上千个文件,python 都能帮你节省大量时间。赶紧试试上面的代码,根据自己的需求调整参数,体验高效处理文本的乐趣吧!如果在使用过程中遇到问题,欢迎在评论区留言讨论~

以上就是python轻松合并多个txt文档的实战指南的详细内容,更多关于python合并txt文档的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com