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

 更新时间:2025年12月08日 10:09:26   作者:普通网友  
在日常工作和学习中,我们经常会遇到需要合并多个TXT文档的场景,如果手动复制粘贴,不仅效率低下,还容易出现遗漏或错误,而使用Python,只需几行代码,就能快速、准确地完成TXT文档的合并操作,本文将详细介绍两种常用的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文档的资料请关注脚本之家其它相关文章!

相关文章

  • Keras-多输入多输出实例(多任务)

    Keras-多输入多输出实例(多任务)

    这篇文章主要介绍了Keras-多输入多输出实例(多任务),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python3中No module named _ssl的问题解决

    python3中No module named _ssl的问题解决

    本文主要介绍了python3中No module named _ssl的问题解决,这个错误表示Python导入_ssl模块时失败,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • 选择Python写网络爬虫的优势和理由

    选择Python写网络爬虫的优势和理由

    在本篇文章里小编给各位整理了一篇关于选择Python写网络爬虫的优势和理由以及相关代码实例,有兴趣的朋友们阅读下吧。
    2019-07-07
  • python装饰器"@"使用实例深入探究

    python装饰器"@"使用实例深入探究

    这篇文章主要为大家介绍了python装饰器"@"使用实例深入探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • python数字转对应中文的方法总结

    python数字转对应中文的方法总结

    在本篇文章里小编给大家分享的是一篇关于python数字转对应中文的方法总结内容,有兴趣的朋友们可以跟着猜尝试测试下。
    2021-08-08
  • PyQt5响应回车事件的方法

    PyQt5响应回车事件的方法

    今天小编就为大家分享一篇PyQt5响应回车事件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • python中input()的用法及扩展

    python中input()的用法及扩展

    这篇文章主要介绍了python中input()的用法及扩展,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • python中的hashlib和base64加密模块使用实例

    python中的hashlib和base64加密模块使用实例

    这篇文章主要介绍了python中的hashlib和base64加密模块使用实例,hashlib模块支持的加密算法有md5 sha1 sha224 sha256 sha384 sha512,需要的朋友可以参考下
    2014-09-09
  • Python 由字符串函数名得到对应的函数(实例讲解)

    Python 由字符串函数名得到对应的函数(实例讲解)

    下面小编就为大家带来一篇Python 由字符串函数名得到对应的函数(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Python双端队列deque的实现

    Python双端队列deque的实现

    双端队列deque支持从任意一端增加和删除元素。本文详细的介绍了Python双端队列deque的实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06

最新评论