Python如何使用os.walk仅在名称为QS的末端文件夹检查指定模式文件是否缺失
解决方案
- 你可以直接在
os.walk的遍历逻辑中增加目录过滤规则,仅处理名称为QS的目录即可,根据你的补充说明目标文件仅存放在名为QS的末端文件夹中,所以不需要额外判断是否为末端目录,只要匹配目录名就可覆盖所有目标场景 - 同时对原有代码的冗余逻辑和变量命名冲突问题做了优化,避免重复读取目录内容
import os import fnmatch QA_files_pattern = '*QA.xlsx' EP_files_pattern = '*EP.xlsx' AD_files_pattern = '*AD.xlsx' filelist = [QA_files_pattern, EP_files_pattern, AD_files_pattern] # 重命名变量避免和循环内的路径变量冲突 root_path = os.path.abspath(os.getcwd()) for current_path, _, files in os.walk(root_path): # 过滤非QS目录,直接跳过 if os.path.basename(current_path) != 'QS': continue # 遍历所有要校验的文件模式 for pattern in filelist: matched_files = fnmatch.filter(files, pattern) if matched_files: print(matched_files) else: # 用os.path.join拼接路径,避免不同系统的路径分隔符兼容问题 print(f"missing {os.path.join(current_path, pattern)}")
如果需要严格限制只校验「没有子目录的QS末端文件夹」,可以调整代码如下:
- 把
os.walk返回的第二个变量从占位符_改为dirnames- 修改过滤判断条件,增加子目录长度校验:
for current_path, dirnames, files in os.walk(root_path): if os.path.basename(current_path) == 'QS' and len(dirnames) == 0: # 后续校验逻辑不变
内容的提问来源于stack exchange,提问作者Ludacia
相关产品推荐
相关产品推荐

