Как сделать директории и поддиректории из списка?
У меня есть список(пример):
['/one/start/push/index.php',
'/one/end/sk/big.css',
'/image/img/back/earth.jpg',
'/one/start/push/main.css']
Я хотел чтобы у меня вывод в консоли был как директория:
one
↳start
↳push
↳index.php
↳main.css
↳end
↳sk
↳big.css
image
↳img
↳back
↳earth.jpg
Перепробовал уже много вариантов, но все не работают или работают но не так, как надо!
Пожалуйста помогите!
Создание директорий не подходит, просто нужен вывод из списка в форме директории!
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
ff = ['/one/start/push/index.php',
'/one/end/sk/big.css',
'/image/img/back/earth.jpg',
'/one/start/push/main.css']
# функция создания структуры иерархии
# каждый элемент словаря содержит список (set) имён непосредственных поддиректорий или файлов
def make_struct(files):
struct = {}
for f in files:
rest = f.strip("/")
path = ()
while rest:
first, rest, *_ = rest.split("/",1) + [None]
struct[path] = struct.get(path, set()) | {first}
path += (first,)
return struct
# функция печати иерархии
def print_struct(struct, path=tuple()):
if path in struct:
for dir in sorted(struct[path]): # если сортировка не нужна, то можно без sorted()
print(f"{' '*len(path)}{dir}") # печатаем имя директории
print_struct(struct, path + (dir,)) # идем рекурсивно на следующий подуровень
print_struct(make_struct(ff))
image
img
back
earth.jpg
one
end
sk
big.css
start
push
index.php
main.css