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)))
我编写这段代码是为了获取目录中的文件数,但我需要它来计算输出行数 运行 ...
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)))