我想出了如何计算文件夹中的目录,但不知道如何编辑我的代码以递归计数子目录。任何帮助将不胜感激。
到目前为止,这是我的代码。
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
答案 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
。