Python: Деревья
Теория: Манипуляции с виртуальной файловой системой
Библиотека, которая используется для построения деревьев, рассчитана только на неизменяемые файловые структуры. Другими словами, уже после создания ее поменять нельзя. Вместо этого можно сделать новую структуру на основе старой, в которой какие-то части будут изменены.
В этом уроке мы изучим неизменяемую структуру. Именно она выбрана для этого курса неслучайно. Такую структуру легче отлаживать и меньше шансов допустить ошибки. И она позволяет максимально погрузиться в использование функций высшего порядка.
Базовые операции с узлами
В пакете python-immutable-fs-trees есть набор функций для работы с уже созданными файлами и директориям. Они позволяют не лезть во внутреннюю структуру самого дерева:
Дополнительно в пакете есть две функции для проверки типа. С их помощью можно выборочно работать с файлами и директориями:
Этих операций хватит для выполнения любых преобразований над файлами и директориями. Начнем с самых простых, которые не требуют рекурсивного обхода.
Обработка
Любая обработка в неизменяемом стиле сводится к формированию новых данных на основе старых. Ниже мы реализуем некоторые варианты преобразования, раскрывающие эту идею.
Изменение имени файла
Фактически можно создать новый файл с метаданными старого:
Перед созданием нового файла метаданные клонируются глубоким клонированием. Так происходит, потому что словари передаются по ссылке. Если не выполнить клонирование, то в метаданных нового файла окажутся метаданные старого.
Как только мы захотим внести изменения в новое, мы сломаем старое:
Сортировка содержимого директории
Также данные внутри директории можно отсортировать:
Обновление содержимого директории
Еще мы можем обновить содержимое директории:
Удаление файлов внутри директории
Кроме того, файлы можно удалять:


