如何使用 Pathlib 遍历 Python 中的目录
How to iterate through directories in Python using Pathlib
我正在使用 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)
它几乎可以工作了。问题是这个 returns 不仅是最深层次的文件夹,还有它们的父文件夹。我是否在格式化 glob 模式时犯了一些错误?或者是否存在更好的方法来仅列出 deepest_level 元素?
我想你想要:
for a in source_path.glob("*/*/*"):
if a.is_dir():
print(a)
来自文档:**
模式表示“此目录和所有子目录,递归”,而 *
是文本通配符。
我正在使用 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)
它几乎可以工作了。问题是这个 returns 不仅是最深层次的文件夹,还有它们的父文件夹。我是否在格式化 glob 模式时犯了一些错误?或者是否存在更好的方法来仅列出 deepest_level 元素?
我想你想要:
for a in source_path.glob("*/*/*"):
if a.is_dir():
print(a)
来自文档:**
模式表示“此目录和所有子目录,递归”,而 *
是文本通配符。