Python 目录树列表

Python 目录树列表,python,directory-tree,Python,Directory Tree,正如标题所解释的,我已经尝试了一些已经在这个网站上发布的问题的答案。问题是,我试图能够选择我在文件夹中挖掘了多少层。例如,如果我只想选择直接子目录,它将如下所示: Subfolder #1 Subfolder #2 Subfolder #3 Subfolder #4 Subfolder #1 Subfolder #1 of the subfolder #1 Subfolder #2 of the subfolder #1 Subfolder #2 Subfolder #1 of t

正如标题所解释的,我已经尝试了一些已经在这个网站上发布的问题的答案。问题是,我试图能够选择我在文件夹中挖掘了多少层。例如,如果我只想选择直接子目录,它将如下所示:

Subfolder #1
Subfolder #2
Subfolder #3
Subfolder #4
Subfolder #1
  Subfolder #1 of the subfolder #1
  Subfolder #2 of the subfolder #1
Subfolder #2
  Subfolder #1 of the subfolder #2
Subfolder #3
Subfolder #4
  Subfolder #1 of the subfolder #4
  Subfolder #2 of the subfolder #4
  Subfolder #3 of the subfolder #4
但是,如果我想要相同,但同时显示前面提到的子目录的直接子目录,它将如下所示:

Subfolder #1
Subfolder #2
Subfolder #3
Subfolder #4
Subfolder #1
  Subfolder #1 of the subfolder #1
  Subfolder #2 of the subfolder #1
Subfolder #2
  Subfolder #1 of the subfolder #2
Subfolder #3
Subfolder #4
  Subfolder #1 of the subfolder #4
  Subfolder #2 of the subfolder #4
  Subfolder #3 of the subfolder #4
PD:我对Python还很陌生,所以我可能错过了很明显的机会


编辑:我重新表述了这个问题,因此我可以更好地解释我的问题,因为它显然让人困惑,而且我的表达方式毫无意义。

如果我正确理解了这个问题,这应该可以满足您的要求。它是一个简单的递归函数,只保留一个计数器,指示它进入目录的“深度”,并在达到所需的递归次数时完成。如果你需要更多的解释,请告诉我

import os

search_dir = "path/to/dir"
inspection_depth = 1

def walk(path, depth):
    depth += 1
    folders = [f for f in os.listdir(path) if os.path.isdir(os.path.join(path, f))]

    for folder in folders:
        full_path = os.path.join(path, folder)
        print(full_path)

        if depth < inspection_depth:
            walk(full_path, depth)

# Call the recursive function
walk(search_dir, 0)
导入操作系统
search_dir=“path/to/dir”
检查深度=1
def步行(路径、深度):
深度+=1
folders=[f表示os.listdir(path)中的f,如果os.path.isdir(os.path.join(path,f))]
对于文件夹中的文件夹:
完整路径=os.path.join(路径,文件夹)
打印(完整路径)
如果深度<检查深度:
步行(全路径、深度)
#调用递归函数
步行(搜索方向,0)

您的意思是像os.listdir()。我猜你的问题让人困惑,因为如果你想要一棵树,那么为什么你只对直接的子目录感兴趣呢。一棵树意味着你要经历多个层次…我不理解你的问题。“没有格式的版本”是什么意思?在我看来,你链接的问题似乎已经回答了你的问题。您需要“直接子目录”,但是
os.walk
正好产生了这样的结果。在每次迭代中,它都会生成“当前目录”文件和子目录的列表。如果您想要“立即子目录”,只需在第一次迭代时停止:
对于uu,立即子目录,在os.walk(parent_dir)):中断
下一步(os.walk(parent_dir))[1]
@Spencer那么,os.listdir()的问题是它没有使用目录树样式,因为这是我问题的重点。@racer21 Spencer说你想要的是一个目录列表(字面意思),而不是一棵树。你只是想一行一行地得到输出吗?如果是这样的话,您是否在os.listdir(somedir):print(f)中尝试过f的
?否则,你能不能用一些预期的结果来回答这个问题并加以澄清?这个问题已经完全重新表述了,所以我可以更好地解释我的问题。