Получение списка файлов в директории через os в python

Код:

from os import system, mkdir, listdir
from os.path import isdir

dirr = __file__[0:__file__.find('pyversave.py')]
files = listdir(dirr)
for i in files:
    if 'versave' in i:
        files.pop(files.index(i))
    elif isdir(i):
        files.pop(files.index(i))
print('directory:', dirr)
print('files detected:', files)

Вывод:

directory: C:\Users\Admin\Desktop\EduCet\
files detected: ['api.py', 'db.db', 'db.py', 'main.py', 'pyversave.py', 'venv', 'views.py', 'web.db', 'web.py', '__pycache__']

Почему не удалился файл pyversave.py и директории venv, __pycache__
В списке должны быть только файлы, в имени которых не содержится versave

Все папки и файлы в директории:

'api.py', 'api.py-versave', 'db.db', 'db.db-versave', 'db.py', 'db.py-versave', 'main.py', 'main.py-versave', 'pyversave.py', 'pyversave.py-versave', 'venv', 'versions', 'views.py', 'views.py-versave', 'web.db', 'web.db-versave', 'web.py', 'web.py-versave'

И еще, почему папки versions нет в списке, а __pycache__ и venv есть, хоть они все папки их быть не должно?


Ответы (1 шт):

Автор решения: NTA

Решением было продублировать код (не знаю почему, но с первого раза значения просто не попадают в for)

from os import system, mkdir, listdir
from os.path import isdir

dirr = __file__[0:__file__.find('pyversave.py')]
files = listdir(dirr)
for i in files:
    if 'versave' in i:
        files.remove(i)
    elif isdir(i):
        files.remove(i)
for i in files:
    if 'versave' in i:
        files.remove(i)
    elif isdir(i):
        files.remove(i)
print('directory:', dirr)
print('files detected:', files)
→ Ссылка