Почему "cycleNumber" не считается выше 10?
import os
cycleNumber = 1
for files in os.listdir('Cycles'):
if files.startswith('Cycle' + str(cycleNumber)):
cycleNumber += 1
Вы только итерации по списку, возвращенному из 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
os.listdir()
отсортирован не так, как вы думаете.