递归地遍历目录并计算给定文件夹出现的次数?

2024-06-30 12:46:09 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试使用python递归遍历文件夹

for item in os.listdir(path):
    print('in ' + os.path.join(path,item))
    if item.upper() == dname.upper():
        print('FOUND')
        next = os.path.join(path,item)
        return 1 + countDir(dname,next)
    else:
        try:
            next = os.path.join(path,item)
            countDir(dname,next)
        except:
            return 0

它停在for循环的第一项,我绞尽脑汁想弄清楚原因。你知道吗

我明白了

countDir('dir1','testThree')
in testThree\dir1
FOUND
in testThree\dir1\Dir1
FOUND
in testThree\dir1\Dir1\dirA
in testThree\dir1\Dir1\dirA\file.txt
in testThree\dir1\Dir1\prog.py
2

但在dir1之后还有2个目录应该进入。 包含两个以上的Dir1,所以我应该返回4而不是2。你知道吗


Tags: pathinforositemuppernextprint
1条回答
网友
1楼 · 发布于 2024-06-30 12:46:09
count = 0

for root, dirs, files in os.walk(path):
    for name in files:
        if  name.upper() == dname.upper():
           count += 1

return count

更新

你缺少一个关键的逻辑。除非目录条目对应于子目录,否则不要递归。这是一个适合我的版本。你知道吗

def countDir(dname, path):
   count = 0
   for item in os.listdir(path):
       if item.upper() == dname.upper():
           count += 1
       else:
           next = os.path.join(path,item)
           if os.path.isdir(next):
              try:
                  count += countDir(dname,next)
              except:
                  return count
   return count

相关问题 更多 >