def get_hidden_files_count(node): if is_file(node) and get_name(node).startswith('.'): return 1 if is_file(node): return 0 children = get_children(node) count_hidden_children = list(map(get_hidden_files_count, children)) return sum(count_hidden_children)
def inner(node, path): name_node = get_name(node) children = get_children(node) if is_file(node) and string in name_node: return path if is_file(node) or len(children) == 0: return [] output = list( map( lambda child: inner(child, os.path.join(path, get_name(child)) ), children, )) return flatten(output)
def downcase_file_names(tree): name = get_name(tree) meta = copy.deepcopy(get_meta(tree)) if is_file(tree): return mkfile(name.lower(), meta) children = get_children(tree) new_children = list(map(downcase_file_names, children)) return mkdir(name, new_children, meta)
def change_owner(node, owner): name = fs.get_name(node) new_meta = copy.deepcopy(fs.get_meta(node)) new_meta['owner'] = owner if fs.is_file(node): # Возвращаем обновлённый файл return fs.mkfile(name, new_meta) children = fs.get_children(node) # Ключевая строчка # Вызываем рекурсивное обновление каждого ребёнка new_children = list( map(lambda child: change_owner(child, owner), children)) new_tree = fs.mkdir(name, new_children, new_meta) # Возвращаем обновлённую директорию return new_tree
def test_is_directory(): node = fs.mkdir('/') assert fs.is_directory(node) assert not fs.is_file(node)
def get_size_node(node): if is_file(node): return get_meta(node)['size'] children = get_children(node) size_children = list(map(get_size_node, children)) return sum(size_children)