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

如何查找路径中不含.ts文件夹的叶子目录?

需求说明

我有一套文件夹结构,最底层的非.ts文件夹里存着epub和json文件。目前正在通过创建带.ts的文件夹(里面放导出标签用的json文件),把原json里的标签导入TagSpaces。已经处理了一部分文件,现在需要找出路径里不包含.ts文件夹的叶子目录,用来定位还没处理的文件,避免重复操作。

举个例子,下面的目录结构里,只有t5是需要处理的:

test
├── t1
│   ├── t2
│   │   └── t5
│   └── t3
│       └── .ts
└── .ts
    └── t4
尝试过的代码

我写了一段代码,但运行有问题:

import os
import shutil

def process_files_in_leaf_subdirectories(dir: str) -> None:
    dirs = []
    for root, subdirs, filenames in os.walk(dir):
        if subdirs or '.ts' in root:
            continue
        dirs.append(root)
    return dirs


def test_process_files_in_leaf_subdirectories():
    os.makedirs('tmp/t1/t2/t5', exist_ok=True)
    os.makedirs('tmp/t1/t3/.ts', exist_ok=True)
    os.makedirs('tmp/.ts/t4', exist_ok=True)
    assert get_files_in_leaf_subdirectories('tmp') == ['tmp/t1/t2/t5']
    shutil.rmtree('tmp')
问题修正

这段代码有两个明显问题:

  1. 函数名不匹配:测试函数里调用的是get_files_in_leaf_subdirectories,但定义的函数是process_files_in_leaf_subdirectories
  2. 逻辑判断错误:原代码会跳过所有有子目录的目录,但如果子目录只有.ts,那当前目录其实已经是处理过的,不需要纳入;同时原代码用.ts in root会误判名称带ts的目录

修正后的代码如下:

import os
import shutil

def get_files_in_leaf_subdirectories(base_dir: str) -> list[str]:
    target_dirs = []
    for root, subdirs, _ in os.walk(base_dir):
        # 跳过路径中包含.ts文件夹的目录
        if '.ts' in root.split(os.sep):
            continue
        
        # 过滤掉子目录中的.ts文件夹
        non_ts_subdirs = [d for d in subdirs if d != '.ts']
        # 没有非.ts的子目录,说明是待处理的叶子目录
        if not non_ts_subdirs:
            target_dirs.append(root)
    return target_dirs


def test_process_files_in_leaf_subdirectories():
    os.makedirs('tmp/t1/t2/t5', exist_ok=True)
    os.makedirs('tmp/t1/t3/.ts', exist_ok=True)
    os.makedirs('tmp/.ts/t4', exist_ok=True)
    assert get_files_in_leaf_subdirectories('tmp') == ['tmp/t1/t2/t5']
    shutil.rmtree('tmp')

修正点说明

  • 用root.split(os.sep)拆分路径,精准判断是否包含.ts文件夹,避免名称含ts的目录被误排除
  • 先过滤子目录里的.ts,再判断是否还有其他子目录,确保只收集真正未处理的叶子目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:11:05