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 python-06-listes-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 exercice.py -v
La totalité des doctests doivent réussir.