Как работает цикл внутри цикла
Я думаю, что у вас есть неправильное понимание того, что происходит, когда вы помещаете цикл внутрь цикла, поэтому позвольте мне сначала объяснить это.
Если у вас есть, например
for item_a in ['a', 'b']:
for item_b in ['1', '2']:
print(item_a + item_b)
тогда ваш вывод будет:
a1
a2
b1
b2
Код должен начинаться сначала с цикла a
, а затем проходить через оба элемента во внутреннем цикле. После завершения следующим элементом во внешнем цикле будет b
, а затем он снова пройдет оба элемента во внутреннем цикле.
Если вы хотите отслеживать, сколько элементов вы перебрали в цикле, вы можете сделать это с помощью этого типа шаблона:
count = 0
for item_a in ['a', 'b']:
count = count + 1
print( str(count) + item_a)
В результате
1a
2a
Но есть ярлык. Вы можете использовать изящную функцию с именем enumerate , чтобы получить счетчик каждого элемента в цикле for.
for count, item_a in enumerate(['a', 'b']):
print( str(count) + item_a)
Что также даст вам
1a
* * 2а тысяча сорок четыре * * 1045
Решение вашей проблемы
С учетом всего вышесказанного вы можете создать свой список файлов примерно так:
# First we loop over os.walk to get the files in the current directory and all sub-directories
for root, dirs, files in os.walk(path):
# And then using enumerate, we can consolidate those two for loops into one loop that properly counts everything
for item, file in enumerate(files):
print(item, os.path.join(root, file))
А если вам не нужны подкаталоги, вы можете просто сделать
for item, file in enumerate(os.listdir(path)):
print(item, file)