Сценарий счетчика файлов Python работает неправильно - PullRequest
0 голосов
/ 30 августа 2018

Почему 'номер цикла' не считается выше 10?

enter image description here

import os

cycleNumber = 1
for files in os.listdir('Cycles'):
    if files.startswith('Cycle' + str(cycleNumber)):
        cycleNumber += 1

1 Ответ

0 голосов
/ 30 августа 2018

Вы перебираете список, возвращенный из os.listdir() (который не в каком-либо конкретном порядке), один раз. Это означает, что если файлы были заданы в неожиданном порядке, например:

Cycle2.txt
Cycle1.txt

Тогда потребуется * до второй итерации для увеличения cycleNumber с 1 до 2, но к тому времени вы уже прошли проходы Cycle2.txt!


Вместо этого вы должны использовать цикл while:

import os
cycleNumber = 0
while any(f.startswith('Cycle' + str(cycleNumber+1)) for f in os.listdir('Cycles')):
    cycleNumber += 1

Тест:

$ mkdir Cycles
$ for i in {1..11}; do touch Cycles/Cycle$i.txt; done;
$ python -q
>>> import os
>>> cycleNumber = 0
>>> while any(f.startswith('Cycle' + str(cycleNumber+1)) for f in os.listdir('Cycles')):
...     cycleNumber += 1
... 
>>> cycleNumber
11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...