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) .