Получение списка файлов в директории через 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)