尝试使用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个目录应该进入。 其中包含2个以上的Dir1'所以我应该返回4而不是2。
答案 0 :(得分:0)
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