Python遍历所有子目录查找文件时if语句无法识别xlsx文件问题求助
问题根因
你的代码存在两处核心问题:
- 没有导入依赖的
os模块,运行会直接报错 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
相关产品推荐
相关产品推荐

