PythonTree

Сегодня, я читал статьи про деревья в БД и случайно в картинках наткнулся на изображение красиво отображающее в консоли иерархическое дерево директории:

В этот момент, мной овалдело непреодолимое желание написать свою версию на Python.

Безо всяких попыток удержаться от такого внутреннего вызова, я немедленно вступил в схватку с неизвестностью. Спустя час с небольшим мне явилось чудо рождения первой, желанной, не до конца окрепшей, но действующей версии метода для отображения дерева. Сейчас это весьма черновой вариант, но он уже полностью рабочий, результат выглядит так:

── TestFolder
   ├─── go
   │    └ image-resizer
   │      ├── handlers.go
   │      └── image_server.go
   │
   └─── scripts
        ├── configure_elasticsearch.py
        ├── email_resend.py
        └── image_upload.py

В терминале:

Интересный факт, благодаря использованию os.walk() основная функция получилась НЕ рекурсивной и формирует дерево в один проход.

Первая версия уже умеет:

  1. отображать дерево красивыми Unicode символами — про это читал здесь
  2. добавляет пустое пространство после последнего файла в директории (spacing_after_last_file=True)
  3. подсвечивать цветом имена файлов, диретории и линии ( colors=True ) — читал тут
  4. отображать дерево в компактном виде ( compact=True )

Планы на будущие версии:

  1. оформить в виде полноценного модуля
  2. добавить возможность отображать стандартными символами ( ` — | )

На неделе, найду время и более подробно опишу процесс здесь.

Ссылка на репозиторий: PythonTree на GitHub

Популярное