web-dev-qa-db-fra.com

Effectuer une itération récursive dans tous les sous-répertoires à l'aide de pathlib

Comment utiliser pathlib pour effectuer une itération récursive sur tous les sous-répertoires d'un répertoire donné?

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

semble seulement parcourir les enfants immédiats d'un répertoire donné.

Je sais que cela est possible avec os.walk() ou glob, mais je souhaite utiliser pathlib car j'aime travailler avec les objets path.

5
user1934212

Vous pouvez utiliser la méthode glob d'un objet Path:

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

pathlib a la méthode glob où nous pouvons fournir un motif en argument. 

Par exemple: Path('abc').glob('**/*.txt') - Il recherchera le dossier en cours abc et tous les autres sous-répertoires de manière récursive pour localiser tous les fichiers txt.

2
Sijan Bhandari

Vous pouvez également utiliser Path.rglob (remplace le ** initial):

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