Les systèmes d’exploitation (Windows, Linux, MacOS pour les plus connus) organisent les ressources sous la forme d’une arborescence de répertoires (directory) pouvant contenir plusieurs types d’éléments, dont les principaux sont :
Pour cet exercice, vous devez utiliser en priorité le fichier squelette ex06-contenu-repertoire.py. IMPORTANT : Enregistrez le avec Right Click + Save Link As...
pour conserver l’encodage.
Selon la convention de structuration des modules, ce fichier sera structuré en quatre parties :
L’objectif est d’écrire une fonction scand()
:
On pourra utiliser les “list comprehension” pour une écriture synthétique.
Vérifier le bon fonctionnement de la fonction en effectuant un appel depuis main
et en affichant la valeur de retour (les doctests de la fonction donnent des exemples d’appel et les valeurs de retour correspondantes).
os
et os.path
Les modules os
et os.path
contiennent des fonctions intéressantes pour la manipulation des fichiers et des répertoires.
Il ne sont pas automatiquement chargés en mémoire et doivent être importés. Après import, les fonctions suivantes sont utiles:
os.listdir
pour obtenir le contenu d’un répertoire ;os.path.isfile
et os.path.isdir
pour tester la nature des éléments contenus dans le répertoire ;os.path.join
pour construire un nom absolu de fichier à partir du nom du répertoire et du nom relatif du fichier. Cf ci dessous.Pour ne pas dépendre du contexte d’exécution, les fonctions os.path.isfile
et os.path.isdir
nécessitent le passage d’un chemin absolu.
Si le répertoire /home/user/docs
contient le fichier letter.txt
, alors:
letter.txt
est le chemin relatif et n’a de sens que dans le répertoire /home/user/docs
;/home/user/docs/letter.txt
est le chemin absolu et a du sens quel que soit le répertoire de travail.Une fois la fonction opérationnelle pour quelques arguments, ET SEULEMENT DANS CE CAS, lancer les doctests dans un terminal:
$ python -m doctest ex06_repertoire.py -v
La totalité des doctests doivent réussir.