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

Python遍历目录获取图片路径如何跳过群晖@eaDir缓存目录

解决群晖@eaDir缓存目录混入图片路径的代码修改方案

核心修改逻辑

  • 递归遍历到目录时,先判断目录名是否为@eaDir,如果是直接跳过不进入递归,从根源避免读取缓存目录内的文件
  • 优化图片后缀判断逻辑,统一转小写匹配,减少重复代码,同时自动覆盖所有大小写格式的jpg、jpeg、png文件
  • 优化列表拼接逻辑,用extend()方法替代+运算符,内存效率更高
  • 将import os移到函数外部,避免每次调用函数重复导入模块

修改后的最终代码

import os

def getListOfFiles(dirName):
    allFiles = list()
    listOfFile = os.listdir(dirName)
    for entry in listOfFile:
        fullPath = os.path.join(dirName, entry)
        if os.path.isdir(fullPath):
            # 跳过所有层级的@eaDir缓存目录
            if entry == '@eaDir':
                continue
            allFiles.extend(getListOfFiles(fullPath))
        else:
            # 统一转小写判断后缀,覆盖所有大小写格式的图片
            if fullPath.lower().endswith(('.jpg', '.jpeg', '.png')):
                allFiles.append(fullPath)
    return allFiles

可选glob实现版本

如果你想改用glob实现,可参考以下写法,核心是判断路径分割后的片段是否包含@eaDir来过滤缓存路径:

import os
import glob

def getListOfFiles(dirName):
    allFiles = []
    # recursive=True开启全局递归遍历
    for file_path in glob.glob(os.path.join(dirName, "**", "*"), recursive=True):
        # 过滤包含@eaDir的路径
        if "@eaDir" in file_path.split(os.sep):
            continue
        # 判断是文件且符合图片后缀要求
        if os.path.isfile(file_path) and file_path.lower().endswith(('.jpg', '.jpeg', '.png')):
            allFiles.append(file_path)
    return allFiles

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:27:06