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

Python遍历所有子目录查找文件时if语句无法识别xlsx文件问题求助

问题根因

你的代码存在两处核心问题:

  1. 没有导入依赖的os模块,运行会直接报错
  2. os.walk()返回的files列表存储的是当前目录下所有文件的具体全称,你直接判断带通配符*的字符串"Filey1_*.xlsx"是否存在于列表中,Python不会自动解析字符串里的通配符规则,永远返回False

修复方案

方案1:基于原有os.walk逻辑,配合fnmatch实现通配符匹配

import os
import fnmatch

# 读取用户输入的ID
ID = input("Please enter folder ID: ")
# 拼接路径推荐用os.path.join,避免不同系统斜杠不兼容的问题
root_path = os.path.join("/Users/one/Downloads", str(ID))

# 校验根目录是否存在,避免无意义遍历
if not os.path.isdir(root_path):
    print(f"错误:ID为{ID}的文件夹不存在")
else:
    for dirpath, _, filenames in os.walk(root_path):
        for filename in filenames:
            # 用fnmatch匹配通配符规则
            if fnmatch.fnmatch(filename, "Filey1_*.xlsx"):
                print("File Found:", os.path.join(dirpath, filename))

方案2:直接用glob模块递归匹配,代码更简洁

你代码注释里也提到了glob,这个模块本身就支持通配符匹配,递归遍历的实现更简单:

import os
import glob

ID = input("Please enter folder ID: ")
root_path = os.path.join("/Users/one/Downloads", str(ID))

if not os.path.isdir(root_path):
    print(f"错误:ID为{ID}的文件夹不存在")
else:
    # recursive=True开启递归遍历所有子文件夹
    for file_path in glob.glob(os.path.join(root_path, "**", "Filey1_*.xlsx"), recursive=True):
        print("File Found:", file_path)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:15:01