• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Заметка Красивый вывод структуры каталогов

Темы, которые НЕ подходят по объему под префикс "Статья"

explorer

Platinum
05.08.2018
1 080
2 474
BIT
0
Всем привет!

Нашёл на просторах интернета скрипт создающий дерево каталогов и файлов. Немного переделал, упростил и добавил красоты в виде вывода с иконками и цветным текстом директорий. В 32 строке программы впишите свой путь, или просто замените на инпут. Цвета можно менять на те, что поддерживает модуль, смотреть

Код программы:
Python:
from pathlib import Path
from itertools import islice
from colorama import Fore, Style

space = '   '
apeak = '│  '
sprig = ['├──']
later = ['└──']
files = 0
directories = 0


def tree(current_folder: Path, only_dir: bool = False, prefix: str = ''):
    global files, directories
    if only_dir:
        scope = [x for x in current_folder.iterdir() if x.is_dir()]
    else:
        scope = list(current_folder.iterdir())
    scope.sort()
    building = list(zip(sprig * (len(scope) - 1) + later, scope))
    for pointer, path in building:
        if path.is_dir():
            yield prefix + pointer + "\U0001F4C2 " + Fore.LIGHTBLUE_EX + Style.BRIGHT + path.name + Fore.RESET
            directories += 1
            extension = apeak if pointer == sprig[0] else space
            yield from tree(path, prefix=prefix + extension)
        elif not only_dir:
            yield prefix + pointer + "\U0001F4C4 " + Fore.LIGHTGREEN_EX + Style.BRIGHT + path.name + Fore.RESET
            files += 1


folder = Path('/home/explorer/LearnQA_Docker')
print(Fore.LIGHTBLUE_EX + Style.BRIGHT + folder.name + Fore.RESET)
iterator = tree(folder)
for line in islice(iterator, 500):
    print(line)
print(f'\n{directories} directories' + (f', {files} files' if files else ''))

Результат выполнения программы:

54545.png


Для линукс существует пакет tree, ставится pip install tree

Для сравнения вывод tree:

65.png


С иконками смотрится симпатичнее )
 

explorer

Platinum
05.08.2018
1 080
2 474
BIT
0

Парни, вы серьёзно думаете, что стандартные команды линукса делают тоже самое? Вообще не то пальто и разные задачи. Данный скрипт отлично вписывается для визуального представления проекта при программировании, или локального сайта и т.д. и т.п.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!