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

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末端文件夹」,可以调整代码如下:

  1. 把os.walk返回的第二个变量从占位符_改为dirnames
  2. 修改过滤判断条件,增加子目录长度校验:
for current_path, dirnames, files in os.walk(root_path):
    if os.path.basename(current_path) == 'QS' and len(dirnames) == 0:
        # 后续校验逻辑不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 08:24:08