os.walk ( )
DESCRIPTION.
Retourne la totalité de l'arborescence enfant d'un répertoire donné.
SYNTAXE.
TRT_Variable = os.walk ( parent , sens , erreur , symbolique )
TRT_Variable = ⇨ variable qui recevra la valeur [ optionnel ]
os.walk ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
parent ⇨ nom du répertoire parent [ OBLIGATOIRE ]
sens ⇨ sens de l'exploration [ optionnel ]
erreur ⇨ fonction de gestion d'erreur [ optionnel ]
symbolique ⇨ lien symbolique [ optionnel ]
REMARQUES.
parent doit être un str ( ) ou un bytes ( ) identifiant le chemin d'un répertoire valide. parent peut être exprimé en :
- chemin absolu, par exemple, sous Linux, "/home/origine/Documents" ;
- chemin relatif, par exemple, sous Linux, "./Programmes" pour le dossier Programmes dans le répertoire de travail actuel.
sens est un attribut nommé topdown = booleen. Si booleen vaut :
- True, valeur par défaut, parent est exploré de l'élément le plus haut vers l'élément le plus bas ;
- False, parent est exploré de l'élément le plus bas vers l'élément le plus haut.
erreur est un attribut nommé onerror = fonction. où fonction peut être une fonction native de Python ou une fonction personnalisée. si erreur n'est pas précisé, les erreurs éventuelles seront simplement ignorées.
symbolique est un attribut nommé par follow_symlinks = valeur, où valeur doit être un bool ( ) symbolique n'est disponible que pour UNIX et la plupart des Linux. Son utilisation sous d'autres OS, tel que Windows de Microsoft, lèvera une exception. Si valeur vaut :
- True, valeur par défaut, os.walk ( ) opère sur le fichier pointé par chemin ;
- False, et que le dernier élément du chemin est un lien symbolique, os.walk ( ) teste le lien symbolique et non le fichier.
L'appel de la méthode os.walk ( ) explore la totalité du répertoire donné comme première argument obligatoire, et retourne un objet itérable. Chaque éléments de cet objet est un tuple ( ) ayant la forme ( chemin , repertoires , fichiers ) où :
- chemin est un str ( ) donnant le nom absolu du répertoire en cours d'exploration ;
- repertoires est une list ( ) donnant les noms relatifs des répertoires enfants de chemin ;
- fichiers est une list ( ) donnant les noms relatifs des fichiers présents dans chemin.
Tant que repertoires n'est pas une list ( ) vide ([ ]), l'un des chemins de cette list ( ) est exploré et sa composition est retournée dans un tuple ( ) de l'itérable. Quand repertoires est une list ( ) vide, l'exploration remonte à son chemin parent, et redescent à partir de celui-ci tant que cela reste possible.
Rappel : Un objet itérable s'épuise, et lui et ses éléments ne peut plus être consulté après avoir été retourné une fois. Si l'on souhaite manipuler sa valeur de retour, il faut convertir cette objet en un objet séquence tel que une list ( ) ou un tuple ( ), voire un dict ( ).
Voir le méthode os.fwalk ( ) qui retourne des tuple ( ) de la forme ( chemin , repertoires , fichiers , descripteur ) où descripteur est le descripteur identifiant chemin.
EXEMPLES.
Exploration du contenu complet du répertoire de travail.
import os
kretourne = os.walk ( os.getcwd ( ) )
for kelement in kretourne :
print ( kelement [ 0 ] ) # affiche le chemin absolue de l'élément exploré
print ( " - ses répertoires :" )
for krepertoire in kelement [ 1 ] : # pour tous les sous répertoires dans répertoire kelement [ 0 ]
print ( " -- " , krepertoire ) # affiche le nom d'un sous répertoire qui sera exploré ensuite
print ( " - ses fichiers :" )
for kfichier in kelement [ 2 ] : # pour tous les fichiers dans répertoire kelement [ 0 ]
print ( " -- " , kfichier ) # affiche le nom d'un fichier
print ( )
Convertir l'itérable retourné par os.walk ( ) en list ( ) pour la manipuler plus longtemps.
import os
LST_Arbrescence = list ( os.walk ( os.getcwd ( ) ) )
for kelement in LST_Arbrescence : print ( kelement [ 0 ] )
Comparaison de l'ordre d'exploration des répertoires selon l'attribut sens.
import os
def FNC_Exploration ( Q ) :
for kelement in Q :
for krepertoire in kelement [ 1 ] :
print ( " - " , krepertoire )
print ( )
print ( "EXPLORATION DE :" , os.getcwd ( ) )
print ( )
print ( "1. du haut vers le bas (topdown = True) : " )
FNC_Exploration ( os.walk ( os.getcwd ( ) ) )
print ( "2. du bas vers le haut (topdown = False) : " )
FNC_Exploration ( os.walk ( os.getcwd ( ) , topdown = False ) )
Comparaison du premier élément retourné selon le sens d'exploration.
import os
def FNC_Decomposition ( Q ) :
print ( "\nRépertoire exploré :" , Q [ 0 ] )
print ( "\n - ses répertoires :" )
for krepertoire in Q [ 1 ] : print ( " +++ " , krepertoire )
print ( "\n - ses fichiers :" )
for kfichier in Q [ 2 ] : print ( " === " , kfichier )
print ( )
print ( "PREMIER ELEMENT DE EXPLORATION DE :" , os.getcwd ( ) )
print ( )
kretourne = os.walk ( os.getcwd ( ) )
print ( "1. du haut vers le bas (topdown = True) : " )
FNC_Decomposition ( kretourne.__next__ ( ) )
kretourne = os.walk ( os.getcwd ( ) , topdown = False )
print ( "2. du bas vers le haut (topdown = False) : " )
FNC_Decomposition ( kretourne.__next__ ( ) )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la LOGITHEQUE de MON PYTHON PAS A PAS
vous trouvez des suggestions de projets simples et classiques pour
ooo
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
ooo
la programmation récréative avec le langage PYTHON 3
avec un exemple de résolution à télécharger pour vous inspirer.