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

如何在指定目录下查找所有*.txt文件?现有代码返回空数组

问题排查与修复方案

咱们先拆解下你这段代码为啥返回空列表:

  1. 匹配逻辑完全错了:lambda f: f == '*.txt'是在找文件名**精确等于*.txt**的文件,而不是匹配所有.txt后缀的文件——除非你真的有个文件就叫*.txt,不然肯定找不到任何结果。
  2. 变量命名有点混乱:明明要找txt文件,却用了mp3files这个变量名,而且file是Python的内置类型,拿来当变量名容易踩坑,建议换个名字。
  3. 另外,"my directory: example"这个路径看起来是占位符,实际运行时记得换成你真实的目录路径(比如"./test_dir"或者绝对路径"/home/user/my_files")。

下面给你几种靠谱的实现方式,按需选择:

方法1:用glob模块(最省心,推荐)

你已经导入了glob,它就是专门用来做文件路径匹配的,语法简单还不容易出错:

import glob

# 替换成你的目标目录,*.txt 匹配该目录下所有txt文件
txt_files = glob.glob("your_real_directory/*.txt")

# 如果需要连子目录里的txt文件一起找,加个recursive=True就行:
# txt_files = glob.glob("your_real_directory/**/*.txt", recursive=True)

print(txt_files)

方法2:用os.listdir配合endswith

要是你坚持想用os.listdir,可以用字符串的endswith方法来判断后缀,顺便加个判断确保是文件(不是名字带.txt的文件夹):

import os

target_dir = "your_real_directory"
all_items = os.listdir(target_dir)
# 筛选出真正的txt文件
txt_files = [
    item for item in all_items 
    if item.endswith(".txt") and os.path.isfile(os.path.join(target_dir, item))
]

print(txt_files)

方法3:用os.walk遍历所有层级

如果需要遍历目标目录下所有子目录里的txt文件,os.walk是个好选择:

import os

target_dir = "your_real_directory"
txt_files = []

# 遍历目录树
for root, _, files in os.walk(target_dir):
    for file_name in files:
        if file_name.endswith(".txt"):
            # 保存完整路径,要是只需要文件名就改成file_name
            txt_files.append(os.path.join(root, file_name))

print(txt_files)

总的来说,glob是最适合这个场景的工具,代码少还直观,优先用它就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:24:17