你如何计算文件夹中的子目录?

时间:2018-05-21 15:51:48

标签: python subdirectory

我想出了如何计算文件夹中的目录,但不知道如何编辑我的代码以递归计数子目录。任何帮助将不胜感激。

到目前为止,这是我的代码。

def nestingLevel(path):
    count = 0
    for item in os.listdir(path):
        if item[0] != '.':
            n = os.path.join(path,item)
            if os.path.isdir(n):
                count += 1 + nestingLevel(n)
    return count

3 个答案:

答案 0 :(得分:5)

我想您可能想要使用os.walk

import os

def fcount(path):
    count1 = 0
    for root, dirs, files in os.walk(path):
            count1 += len(dirs)

    return count1

path = "/home/"
print fcount(path)

答案 1 :(得分:1)

如果你想在没有root的情况下统计它们,那就可以了:

{{1}}

答案 2 :(得分:0)

你可以在这里使用glob - **模式表示递归的glob。尾部斜杠与目录匹配,不包括其他类型的文件。

from pathlib import Path

def recursive_subdir_count(path):
    dirs = Path(path).glob('**/')
    result = sum(1 for dir in dirs)
    result -= 1  # discount `path` itself

使用/适用于Windows,macOS和Linux,所以不要担心会改为os.sep

谨防一个奇怪的边缘情况: shell globs通常会排除隐藏目录,即那些以.开头,但pathlib包含的目录那些(这是一个特征,而不是一个bug:见issue26096)。如果您关心对隐藏目录进行折扣,请在调用sum时在表达式中对其进行过滤。或者,使用默认排除它们的旧模块glob