如何使用Python在指定目录(含子文件夹)中全域搜索文件
遍历目录及子文件夹查找目标文件的Python实现
方法一:改进glob.glob()的用法
你之前用glob.glob()只能搜索当前目录,是因为没启用递归模式。加上recursive=True参数,并配合**通配符(匹配任意层级的子文件夹),就能实现递归遍历:
import glob import os def find_target_file(target_dir, filename): # 构造递归搜索的路径模式 search_path = os.path.join(target_dir, '**', filename) # 开启递归遍历,获取所有匹配的文件路径 matched_files = glob.glob(search_path, recursive=True) return matched_files # 示例调用 target_dir = "/your/target/directory" target_name = "test.py" results = find_target_file(target_dir, target_name) if results: print("找到以下目标文件:") for path in results: print(path) else: print("未找到指定文件")
方法二:使用os.walk()遍历目录树
os.walk()是Python内置的目录遍历工具,会逐层遍历目录及其子文件夹,适合需要更灵活控制的场景:
import os def find_target_file(target_dir, filename): matched_files = [] # root:当前遍历的目录路径;dirs:当前目录下的子文件夹列表;files:当前目录下的文件列表 for root, dirs, files in os.walk(target_dir): if filename in files: # 拼接完整文件路径并加入结果列表 full_path = os.path.join(root, filename) matched_files.append(full_path) return matched_files # 示例调用 target_dir = "/your/target/directory" target_name = "test.py" results = find_target_file(target_dir, target_name) if results: print("找到以下目标文件:") for path in results: print(path) else: print("未找到指定文件")
两种方法对比
glob.glob():代码更简洁,适合快速实现递归搜索需求os.walk():遍历过程中可以对文件夹、文件做额外过滤或处理,灵活性更高
内容的提问来源于stack exchange,提问作者MPlaty
相关产品推荐
相关产品推荐

