Как пройти каталог в винде обходом в глубину?
Как пройти каталог обходом в глубину? Дальше второго уровня не проходит. Проблема в том что при рекурсии возникает неправильный путь к папкам. Подскажите в каком направлении думать.
import os
PATH = 'D:\\projects\\portfolio'
def list_is_direct(name_path):
visit = [] # список посещенных папок
list_item = os.listdir(name_path) # получаем список папок и файлов в указанной директории
for item in list_item:
try:
if os.path.isdir(name_path + '\\' + item):
if not item is visit:
items = os.listdir(name_path + '\\' + item) # заходим в каждую папку
print(name_path + '\\' + item)
visit.append(item)
for i in items:
if os.path.isdir(name_path + '\\' + i):
print('\t' + name_path + '\\' + i)
list_is_direct(name_path + '\\' + item)
else:
print('\t' + i)
except PermissionError: # обработка исключения прав доступа
continue
list_is_direct(PATH)
Хочу сделать вывод в консоли вот такого вида:
папка1
---папка1
---папка2
---папка1
---папка2
---папка1
---папка3
папка2
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Дерево каталогов есть дерево, а не произвольный граф (если не учитывать symbolic links) и обходить его несложно:
import os
PATH = 'E:\\Downloads'
def list_is_direct(name_path, level = 0):
print('\t'*level + name_path)
list_item = os.listdir(name_path) # получаем список папок и файлов в указанной директории
for item in list_item:
try:
if os.path.isdir(name_path + '\\' + item):
list_is_direct(name_path + '\\' + item, level + 1)
except PermissionError: # обработка исключения прав доступа
continue
list_is_direct(PATH)