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

Python如何根据部分文件名关键词模糊查找目标文件

代码返回None的原因

你的代码有两个核心错误:

  1. os.walk() 返回的第三个元素是当前遍历目录下所有文件名组成的列表,不是单个文件名,你直接判断搜索关键词是否在列表中,只有当某个文件名完全等于你输入的关键词时才会命中,部分匹配的场景下永远不会触发判断条件。
  2. 就算侥幸匹配到内容,你拼接路径时用的是自己输入的关键词片段,不是实际存储的完整文件名,拼接出来的路径本身也是无效的。
正确实现代码

首先确保你已经导入了os模块,修正后的单文件匹配(返回第一个找到的匹配文件)代码如下:

import os

def findfile(keyword, search_path):
    for dirpath, _, filenames in os.walk(search_path):
        # 逐个遍历当前目录下的所有文件名做匹配
        for filename in filenames:
            # 增加忽略大小写匹配,适配Windows文件名不区分大小写的特性,Linux/macOS可按需去掉lower()转换
            if keyword.lower() in filename.lower():
                # 用实际匹配到的完整文件名拼接路径
                return os.path.join(dirpath, filename)
    # 全路径遍历完无匹配时返回None
    return None

# 调用示例
filepath = findfile("In The End - Mellen Gi Remix", "C:/Users/PycharmProjects")
print(filepath)
扩展:查找所有匹配文件

如果你需要找出路径下所有文件名包含关键词的文件,而不是找到第一个就返回,可以用列表存储所有匹配结果:

import os

def find_all_match_files(keyword, search_path):
    match_result = []
    for dirpath, _, filenames in os.walk(search_path):
        for filename in filenames:
            if keyword.lower() in filename.lower():
                match_result.append(os.path.join(dirpath, filename))
    return match_result
注意事项
  • 路径书写不需要使用双斜杠//,Python中直接用单斜杠/书写Windows路径即可正常识别,也可以用双反斜杠\\做转义,不推荐//写法。
  • 如果搜索路径下文件数量很多,遍历会消耗一定时间,属于正常现象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:09:47