Вы можете подойти к этому как:
- Преобразовать имена файлов в соответствующие целые числа.
- Найдите пропущенные числа.
- Объедините пропущенные числа с шаблоном имени файла в качестве вывода.
Для (1), если структура файла предсказуема, это легко.
def to_num(s, start=6):
return int(s[start:s.index('.txt')])
Дано:
lst = ['KUMAR.3.txt', 'KUMAR.4.txt', 'KUMAR.6.txt', 'KUMAR.7.txt',
'KUMAR.9.txt', 'KUMAR.10.txt', 'KUMAR.11.txt', 'KUMAR.13.txt',
'KUMAR.15.txt', 'KUMAR.16.txt']
Вы можете получить список известных номеров по: map(to_num, lst)
. Конечно, чтобы искать пробелы, вам действительно нужен только минимум и максимум. Объедините это с функцией range
, и вы получите все цифры, которые вы должны увидеть, а затем удалите полученные цифры. Наборы полезны здесь.
def find_gaps(int_list):
return sorted(set(range(min(int_list), max(int_list))) - set(int_list))
Собираем все вместе:
missing = find_gaps(map(to_num, lst))
for i in missing:
print 'KUMAR.%d.txt' % i