【问题标题】:How to iterate through directories in Python using Pathlib如何使用 Pathlib 遍历 Python 中的目录
【发布时间】:2019-04-29 01:38:43
【问题描述】:

我正在使用 Python 3,我需要对文件夹执行一些操作,使用 Pathlib 并检查它们是否是文件夹。

我要做的操作是这样的:

from pathlib import Path
source_path = Path("path_directory_string")

for a in source_path.iterdir():
    if a.is_dir():
        for b in a.iterdir():
            if b.is_dir():
                for c in b.iterdir():
                    if c.is_dir():
                        # do something

我的问题是是否有更好的方法来做到这一点。回顾过去提出的问题,看起来最好的方法是使用 Pahtlib 的方法 glob。所以,由于我有三个层次的深度,我尝试了这个:

for a in source_path.glob("**/**/**"):
    if a.is_dir():
        print(a)

它几乎可以工作。问题是这不仅会返回最深层的文件夹,还会返回它们的父文件夹。我在格式化 glob 模式时是否犯了一些错误?或者是否存在仅列出 deepest_level 元素的更好方法?

【问题讨论】:

    标签: python directory glob subdirectory pathlib


    【解决方案1】:

    我想你想要:

    for a in source_path.glob("*/*/*"):
        if a.is_dir():
            print(a)
    

    来自文档:** 模式表示“此目录和所有子目录,递归地”,而一个 * 是文本通配符。

    【讨论】: