Проверка длины связана с тем, что самое короткое разумное имя файла представляет собой один символ, за которым следует .py
, что дает как минимум 4 символа.
Последние проверки, похоже, пытаются захватить скомпилированные файлы с расширениями .pyc
и .pyo
, но это совершенно не нужно, поскольку они не будут соответствовать условию f[-2:] == "py"
.
. Для разбиения имени файла на корень и расширение вы также можете рассмотреть возможность использования os.path.splitext
.
[root for (root, ext) in map(os.path.splitext, os.listdir(path)) if ext == '.py']