我有一个文件夹,其中包含一定数量的文件夹,并且它们都包含文件夹中的文件夹,我想检查每个文件夹中的子目录数。我尝试使用os.walk
并在每次遇到文件夹时添加+1。但是这会返回所有目录的子目录计数,我希望它们分别用于每个文件夹。
例如,假设我有文件夹A1和A2。
A1: subfolder1 -(contains)-> subfolder2
A2: subfolder1 -(contains)-> subfolder2 -(contains)-> subfolder3 -(contains)-> subfolder4
现在我的代码返回6而不是2和4。
def count_folders(path):
count=0
for dir in os.listdir(path):
nDir = os.path.join(path,dir)
if os.path.isdir(nDir):
for dirs in os.walk(nDir):
if os.path.isdir(dirs[0]):
count+=1
print count
答案 0 :(得分:0)
我在这里试试时效果很好:
def count_folders(path):
count = 0
for root, dirs, files in os.walk(pth):
count += len(dirs)
return count
要了解其工作原理,请尝试打印" root"," dirs"和"文件"一个接一个。
答案 1 :(得分:0)
也许您可以注释掉这三行,这可能会阻止count
变量计算“子文件夹的子文件夹”的数量。
import os
def count_folders(path):
count=0
for dir in os.listdir(path):
nDir = os.path.join(path,dir)
if os.path.isdir(nDir):
count+=1
# for dirs in os.walk(nDir):
# if os.path.isdir(dirs[0]):
# count+=1
print count
答案 2 :(得分:0)
如果您要查找path
中每个子目录内的子目录数,可以尝试此功能:
def count_folders(path):
count={}
for dir in os.listdir(path):
nDir = os.path.join(path,dir)
if os.path.isdir(nDir):
c = 0
for d in os.listdir(nDir):
if os.path.isdir(os.path.join(nDir, d)):
c+=1
count[nDir] = c
print count
它返回一个字典,其中包含每个子路径内的子目录数。