gpt4 book ai didi

Python-获取目录和子目录的递归列表

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:22 25 4
gpt4 key购买 nike

我想获取包含每个目录及其子目录的元组列表,例如,具有如下树:

-A
---AA
---AB
-----ABA
-----ABB
-B
---BA
---BB

我会得到一个如下所示的列表:

[
(A, [
(AA, []),
(AB, [
(ABA, []),
(ABB, []),
]),
]),
(B, [
(BA, []),
(BB, []),
]),
]

我对这些文件不感兴趣。

我尝试使用os.walk('.'),但在移动到下一个条目之前我没有设法进入目录。

有什么想法吗?

最佳答案

我们可以通过以下方式获取直接子目录的列表:

from os import listdir
from os.path import join, isdir

subdirs = [join(d, o) for o in listdir(d) if isdir(join(d,o))]

我们可以以递归方式使用它:

from os import listdir
from os.path import join, isdir

def obtain_subdir_tuples(d):
subdirs = [join(d, o) for o in listdir(d) if isdir(join(d,o))]
return (d, [obtain_subdir_tuples(subdir) for subdir in subdirs])

然而,这样做的一个潜在问题是,我们也可以遵循符号链接(symbolic link)并陷入无限递归:目录中的符号链接(symbolic link)指向该目录的父目录(或一般的 anchor )。在这种情况下,该目录在某种程度上是其自身的子目录。我们可以通过首先使用 islink 检查它是否是符号链接(symbolic link)来避免这种情况:

from os import listdir
from os.path import join, isdir, islink

def obtain_subdir_tuples(d):
subdirs = [join(d, o)
for o in listdir(d)
if isdir(join(d, o)) and not islink(join(d, o))]
return (d, [obtain_subdir_tuples(subdir) for subdir in subdirs])

关于Python-获取目录和子目录的递归列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48551707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com