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

如何将目录下所有TXT文件内容合并到Python列表中?

将目录下所有TXT文件内容合并到Python列表的实现方案

优化后的完整代码

可以用更简洁的方式批量获取TXT文件并合并内容,代码如下:

from pathlib import Path

def get_all_txt_files(dir_path):
    # 递归获取目录下所有后缀为.txt的文件
    return list(Path(dir_path).rglob("*.txt"))

def merge_txt_content(file_list):
    combined_content = []
    for file_path in file_list:
        # 指定编码避免乱码问题
        with open(file_path, encoding="utf-8") as f:
            # 按行读取并自动去除换行符
            lines = f.read().splitlines()
            # 清理每行前后空格,同时过滤空行(可根据需求移除过滤条件)
            cleaned_lines = [line.strip() for line in lines if line.strip()]
            # 将当前文件内容追加到总列表
            combined_content.extend(cleaned_lines)
    return combined_content

# 执行示例
if __name__ == "__main__":
    target_dir = r"C:\num"
    txt_files = get_all_txt_files(target_dir)
    final_list = merge_txt_content(txt_files)
    print(f"合并完成,总共有 {len(final_list)} 条内容")

基于你现有代码的修改方案

如果想保留自己写的递归文件搜索函数,只需添加TXT文件过滤逻辑,再配合读取代码即可:

from pathlib import Path

def searching_all_files():
    dirpath = Path(r'C:\num')
    assert dirpath.is_dir()
    file_list = []
    for x in dirpath.iterdir():
        # 仅收集后缀为txt的文件
        if x.is_file() and x.suffix.lower() == ".txt":
            file_list.append(x)
        elif x.is_dir():
            file_list.extend(searching_all_files(x))
    return file_list

def merge_txt_content(file_list):
    combined_content = []
    for file_path in file_list:
        with open(file_path, encoding="utf-8") as f:
            lines = f.read().splitlines()
            cleaned_lines = [line.strip() for line in lines if line.strip()]
            combined_content.extend(cleaned_lines)
    return combined_content

# 使用示例
txt_files = searching_all_files()
final_list = merge_txt_content(txt_files)

关键细节说明

  • rglob替代手动递归,代码更简洁且不易出错;
  • with open语法确保文件自动关闭,避免资源泄漏;
  • splitlines()比readlines()更干净,自动剔除每行末尾的换行符;
  • 用extend而非append:前者将列表元素逐个加入总列表,后者会把整个文件的行列表作为单个元素加入;
  • 空行过滤为可选操作:如果不需要移除空行,把cleaned_lines的生成式改为[line.strip() for line in lines]即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 06:21:37