Python os.walk遍历文件时如何匹配并打印文件名指定关键词
Python os.walk 关键词匹配文件功能修正方案
原代码存在的核心问题
- 路径字符串书写错误:
"C:\\Users\"末尾反斜杠转义了闭合引号,会触发语法报错 os.walk返回值解析错误:该方法每次迭代返回长度为3的元组(当前遍历目录路径, 当前目录下子目录名列表, 当前目录下文件名列表),原代码直接将整个元组当作文件名处理,无法拿到实际文件- 匹配语法错误:Python不存在
is like关键字,字符串包含判断直接使用in操作符即可 - 缺少要求的文件信息字典存储逻辑
修正后可直接运行的代码
import os # 预设匹配关键词列表 match_keywords = ["draft", "first", "test"] # 目标遍历路径,用原始字符串避免转义问题 target_path = r"C:\Users" # 存储最终文件信息的字典,key为文件完整路径,value为该文件匹配到的关键词列表 file_info_dict = {} for root, dirs, files in os.walk(target_path): # 遍历当前目录下的所有文件名 for file_name in files: matched = [] # 逐一检查关键词是否在文件名中 for keyword in match_keywords: if keyword in file_name: matched.append(keyword) # 如果存在匹配项,打印结果并存入字典 if matched: file_full_path = os.path.join(root, file_name) file_info_dict[file_full_path] = matched print(f"文件:{file_full_path},匹配到关键词:{', '.join(matched)}") # 大型项目后续逻辑可直接调用file_info_dict获取全量匹配文件信息
补充说明
- 路径使用
r前缀的原始字符串,不需要手动写双反斜杠转义,避免路径书写错误 - 用
os.path.join拼接文件完整路径,兼容Windows、macOS、Linux不同系统的路径分隔符 - 上述关键词匹配默认区分大小写,如果需要不区分大小写,可以把判断逻辑改成
if keyword.lower() in file_name.lower()即可
内容的提问来源于stack exchange,提问作者Nip
相关产品推荐
相关产品推荐

