Каталог рекурсивных списков - генераторы - PullRequest
0 голосов
/ 28 мая 2018

Я хочу создать метод для рекурсивного перечисления путей на генераторах (поэтому мне не нужно ждать вывода в случае больших каталогов).Код, который я создал, углубляется в файловую иерархию, но не возвращается :( Что я здесь не так делаю?

Например:

- /

-- a

--- aa

---- aaa

---- aab

--- ab

-- b

Код будет выглядеть так: a, aa, aaa, aab - мне не хватает aab и b и т. Д.

ПРИМЕЧАНИЯ:

1) Код не готов, поэтому присвоение имен некорректно, я исправлю это, когда код будетработать как задумано

2) метод self.list также является генератором, который перечисляет каталог в удаленном svn и выдает пути

def list_recursive(self, excluded_paths=[], rel_path=''):
    print('rel_path: '+rel_path)
    for path in self.list(rel_path=rel_path):
        yield path
        a = rel_path + path
        print('\ta: ' + a)
        if a.endswith('/'):
            print('\ta: ' + a)
            for aaa in self.list_recursive(rel_path=a):
                yield(aaa)

1 Ответ

0 голосов
/ 28 мая 2018

Я нашел ошибку в строке for path in self.list(rel_path=rel_path):.Это должно быть for path in list(self.list(rel_path=rel_path)):, как в случае повторения, потому что пошел только в первый каталог, а в списке не было всех остальных.Список содержит полный список файлов в этом каталоге, поэтому цикл for может вернуться к ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...