TP - Fichiers - Maths et Algo

Transcription

TP - Fichiers - Maths et Algo
TP - Fichiers - Mini explorateur.nb
1/2
Fichiers: mini explorateur
1) Objectif
On veut écrire une fonction explorer(chemin, voir_fichiers = False) (avec chemin un nom de répertoire) affichant clairement
l’arborescence des répertoires, sous répertoires et des fichiers (en option pour les fichiers) contenus dans le répertoire chemin, ainsi
que le nombre total de sous répertoires et de fichiers contenus dans chemin. Par exemple:
chemin = "C:\\Program Files\\Common Files\\Bullzip"
explorer(chemin) # renvoie
Répertoire exploré = C:\Program Files\Common Files\Bullzip
..\PDF Printer
....\PDF Printer\API
......\PDF Printer\API\COM
......\PDF Printer\API\Microsoft.NET
........\PDF Printer\API\Microsoft.NET\Framework
..........\PDF Printer\API\Microsoft.NET\Framework\v2.0
..........\PDF Printer\API\Microsoft.NET\Framework\v4.0
....\PDF Printer\Ports
......\PDF Printer\Ports\BULLZIP
..\System
....\System\Framework
......\System\Framework\v2.0
......\System\Framework\v4.0
Au total, 13 sous répertoires et 11 fichiers
Et:
explorer(chemin, True) # renvoie
..\PDF Printer
....\PDF Printer\API
......\PDF Printer\API\COM
bzpdfc.dll
......\PDF Printer\API\Microsoft.NET
........\PDF Printer\API\Microsoft.NET\Framework
..........\PDF Printer\API\Microsoft.NET\Framework\v2.0
Bullzip.PDFWriter.dll
..........\PDF Printer\API\Microsoft.NET\Framework\v4.0
Bullzip.PDFWriter.dll
Bullzip.PDFWriter.tlb
....\PDF Printer\Ports
......\PDF Printer\Ports\BULLZIP
bzpdf.dll
..\System
....\System\Framework
......\System\Framework\v2.0
Bullzip.PdfWriter.Lib.dll
Bullzip.PdfWriter.Upload.dll
......\System\Framework\v4.0
Bullzip.PdfWriter.Lib.dll
Bullzip.PdfWriter.Lib.tlb
Bullzip.PdfWriter.Upload.dll
Bullzip.PdfWriter.Upload.tlb
Au total, 13 sous répertoires et 11 fichiers
TP - Fichiers - Mini explorateur.nb
2/2
2) Modules utiles, notation d’un chemin
Le module os contient les outils permettant d'interagir avec le système d'exploitation
Le module os.path contient les outils permettant de manipuler les chemins absolus ou relatifs des fichiers ou répertoires.
Dans Windows, les chemins des fichiers sont écrits avec des antislashs (\). Mais le caractère \ (le Backslash) est en Python le
caractère d’échappement dans une chaîne de caractères. Et donc en Python le caractère “\” est “\\”
print("tabulation:\t saut de ligne:\n backslach:\\") # renvoie
tabulation: saut de ligne:
backslach:\
Il faudra donc pour ne pas avoir d’ennuis doubler le Backslash dans les noms de chemins, qui peuvent être rentrés par des copies
depuis la barre d’affichage de l’explorateur windows. Par exemple:
chemin = "C:\Users\Eric\Documents\Algorithmique" # devra être écrit
chemin = "C:\\Users\\Eric\\Documents\\Algorithmique"
On peut aussi écrire les chemins avec des Slashs (/).
chemin = "C:/Users/Eric/Documents/Algorithmique"
# est correct
3) Mini explorateur
Pour cela, on va utiliser la fonction os.walk(chemin) qui crée un générateur de triplets (rep, liste_sous_rep, liste_fichiers) dans
l’arborescence de chemin.
Plus précisément, pour tous les sous répertoires rep contenus dans le répertoire racine chemin, liste_sous_rep et liste_fichiers
contiennent la liste des sous répertoires et des fichiers contnus dans rep. La fonction aura la structure suivante:
La fonction aura la structure suivante:
def explorer(chemin, voir_fichiers = False):
""" Explorer le répertoire chemin"""
print("Répertoire exploré = " + chemin)
for rep, liste_sous_rep, liste_fichiers in os.walk(chemin):
faire quelque chose
Les deux difficultés restant à surmonter pour terminer l’écriture de la fonction sont:
• Afficher le nom relatifs des sous répertoires rep et pas leur nom absolu
• Décaler vers la droite l’affichage des sous répertoires en fonction de leur profondeur
Q1) A vous de jouer: écrire cette fonction explorer(chemin, voir_fichiers = False) .

Documents pareils