HTML Diff
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