python for 在 os.walk() 中循环

python for loop in os.walk()

我编写这段代码是为了获取目录中的文件数,但我需要它来计算输出行数 运行 ...

import os
for dir,subdir,files in os.walk(r"C:\Users\adam\Desktop\test"):
    i = 0 
    i = i + 1 
    print(str(i) + ": files "+str(len(files)))

输出:

1: files 3
1: files 0
1: files 0

行号不会改变它保持 1 ??我该如何解决它并解释为什么我需要理解

因为你在每次迭代中都初始化 i =0

import os
i = 0 
for dir,subdir,files in os.walk(r"C:\Users\adam\Desktop\test"):
    i = i + 1 
    print(str(i) + ": files "+str(len(files)))

这很明显,因为

i = 0 
i = i + 1 

一行等同于

i = 1

不要自己处理索引。使用 enumerate 代替,从 1 开始,并且由于您没有使用 dir 部分,所以在解包时将它们匿名化。

for i,(_,_,files) in enumerate(os.walk(r"C:\Users\adam\Desktop\test"),1):
    print("{} : files ".format(i,len(files)))