0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Библиотека, которая используется для построения деревьев, рассчитана только на неизменяемые файловые структуры. Другими словами, уже после создания ее поменять нельзя. Вместо этого можно сделать новую структуру на основе старой, в которой какие-то части будут изменены.</p>
1
<p>Библиотека, которая используется для построения деревьев, рассчитана только на неизменяемые файловые структуры. Другими словами, уже после создания ее поменять нельзя. Вместо этого можно сделать новую структуру на основе старой, в которой какие-то части будут изменены.</p>
2
<p>В этом уроке мы изучим неизменяемую структуру. Именно она выбрана для этого курса неслучайно. Такую структуру легче отлаживать и меньше шансов допустить ошибки. И она позволяет максимально погрузиться в использование функций высшего порядка.</p>
2
<p>В этом уроке мы изучим неизменяемую структуру. Именно она выбрана для этого курса неслучайно. Такую структуру легче отлаживать и меньше шансов допустить ошибки. И она позволяет максимально погрузиться в использование функций высшего порядка.</p>
3
<h2>Базовые операции с узлами</h2>
3
<h2>Базовые операции с узлами</h2>
4
<p>В пакете<em>python-immutable-fs-trees</em>есть набор функций для работы с уже созданными файлами и директориям. Они позволяют не лезть во внутреннюю структуру самого дерева:</p>
4
<p>В пакете<em>python-immutable-fs-trees</em>есть набор функций для работы с уже созданными файлами и директориям. Они позволяют не лезть во внутреннюю структуру самого дерева:</p>
5
<p>Дополнительно в пакете есть две функции для проверки типа. С их помощью можно выборочно работать с файлами и директориями:</p>
5
<p>Дополнительно в пакете есть две функции для проверки типа. С их помощью можно выборочно работать с файлами и директориями:</p>
6
<p>Этих операций хватит для выполнения любых преобразований над файлами и директориями. Начнем с самых простых, которые не требуют рекурсивного обхода.</p>
6
<p>Этих операций хватит для выполнения любых преобразований над файлами и директориями. Начнем с самых простых, которые не требуют рекурсивного обхода.</p>
7
<h2>Обработка</h2>
7
<h2>Обработка</h2>
8
<p>Любая обработка в неизменяемом стиле сводится к формированию новых данных на основе старых. Ниже мы реализуем некоторые варианты преобразования, раскрывающие эту идею.</p>
8
<p>Любая обработка в неизменяемом стиле сводится к формированию новых данных на основе старых. Ниже мы реализуем некоторые варианты преобразования, раскрывающие эту идею.</p>
9
<h3>Изменение имени файла</h3>
9
<h3>Изменение имени файла</h3>
10
<p>Фактически можно создать новый файл с метаданными старого:</p>
10
<p>Фактически можно создать новый файл с метаданными старого:</p>
11
<p>Перед созданием нового файла метаданные клонируются глубоким клонированием. Так происходит, потому что словари передаются по ссылке. Если не выполнить клонирование, то в метаданных нового файла окажутся метаданные старого.</p>
11
<p>Перед созданием нового файла метаданные клонируются глубоким клонированием. Так происходит, потому что словари передаются по ссылке. Если не выполнить клонирование, то в метаданных нового файла окажутся метаданные старого.</p>
12
<p>Как только мы захотим внести изменения в новое, мы сломаем старое:</p>
12
<p>Как только мы захотим внести изменения в новое, мы сломаем старое:</p>
13
<h3>Сортировка содержимого директории</h3>
13
<h3>Сортировка содержимого директории</h3>
14
<p>Также данные внутри директории можно отсортировать:</p>
14
<p>Также данные внутри директории можно отсортировать:</p>
15
<h3>Обновление содержимого директории</h3>
15
<h3>Обновление содержимого директории</h3>
16
<p>Еще мы можем обновить содержимое директории:</p>
16
<p>Еще мы можем обновить содержимое директории:</p>
17
<h3>Удаление файлов внутри директории</h3>
17
<h3>Удаление файлов внутри директории</h3>
18
<p>Кроме того, файлы можно удалять:</p>
18
<p>Кроме того, файлы можно удалять:</p>
19
19