Python для цикла в os.walk () - PullRequest
0 голосов
/ 20 июня 2019

Я пишу этот код, чтобы получить количество файлов в моем каталоге, но мне нужно, чтобы он подсчитывал выходные строки при запуске ...

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 ?? как я могу решить это и объяснить, почему, пожалуйста, мне нужно понять

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

потому что вы инициализируете 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)))
1 голос
/ 20 июня 2019

это довольно очевидно, как

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)))
...