Рекурсивно перебирать все подкаталоги с помощью pathlib

Как я могу использовать pathlib для рекурсивной итерации по всем подкаталогам данного каталога?

p = Path('docs')
for child in p.iterdir(): child

только кажется, что перебирает непосредственных потомков данного каталога.

Я знаю, что это возможно с os.walk() или glob, но я хочу использовать pathlib, потому что мне нравится работать с объектами path.

Ответы

Ответ 1

Вы можете использовать метод glob объекта Path:

p = Path('docs')
for i in p.glob('**/*'):
     print(i.name)

Ответ 2

Используйте Path.rglob (заменяет ведущий ** в Path().glob("**/*")):

path = Path("docs")
for p in path.rglob("*"):
     print(p.name)

Ответ 3

pathlib имеет метод glob где мы можем предоставить шаблон в качестве аргумента.

Например: Path('abc').glob('**/*.txt') - он будет искать текущую папку abc и все другие подкаталоги рекурсивно, чтобы найти все txt файлы.