Dans cet exercice, on continue avec les classes : l'objectif va être de créer une classe Path
qui va simplifier la manipulation de chemins vers des dossiers ou fichiers sur notre disque dur.
Pour les besoins de cet exercice nous allons créer 4 méthodes et propriétés et nous considérerons que nous sommes sur un système unix (donc avec des slashes dans le 'bon' sens : /
) :
-
Une propriété
ext
pour récupérer l'extension du fichier. -
Une propriété
basename
pour récupérer le nom du fichier uniquement (donc sans le dossier parent et sans l'extension). -
Une méthode
dirname
qui va récupérer le dossier parent du chemin actuel. Cette méthode devra retourner un objetPath
pour que l'on puisse appliquer de nouveau la méthodedirname
sur le résultat précédent. -
La méthode
__str__
qui devra retourner le chemin sous forme de chaîne de caractères. Ainsi, quand nous ferons un print de notre chemin, cela nous permettra de voir le chemin directement et non l'instance (ex:"/Users/thibh/Documents/test.txt"
au lieu de<__main__.Path object>
).
Notre script devra donc exécuter et retourner les lignes de code suivantes :
>>> s = Path("/Users/thibh/Documents/test.txt")
>>> print(s.dirname().dirname())
/Users/thibh
>>> print(s.basename)
test
>>> print(s.ext)
.txt
Vous devez réaliser cet exercice sans utiliser le module os
!
class Path(): """simplifie la manipulation de chemins vers des dossiers ou fichiers sur notre disque dur""" SEP: str = "/" def __init__(self, path: str): self.path = path @property def ext(self) -> str: """récupère l'extension du fichier""" return self.path.split(".")[-1] @property def basename(self) -> str: """récupère le nom du fichier uniquement""" filename_with_ext = self.path.split(Path.SEP)[-1] return filename_with_ext.split(".")[-2] def dirname(self) -> Path: """récupère le dossier parent du chemin actuel""" new_path = Path.SEP.join(self.path.split(Path.SEP)[:-1]) return Path(path=new_path) def __str__(self) -> str: """retourne le chemin sous forme de chaîne de caractères""" return self.path s = Path("/Users/thibh/Documents/test.txt") print(s.dirname().dirname()) print(s.basename) print(s.ext)
Lionel

class Path(): pass s = Path("/Users/thibh/Documents/test.txt") print(s.dirname().dirname()) print(s.basename) print(s.ext)
Un instant...
Test de la propriété ext
La propriété ext
doit retourner l'extension du fichier, dans ce cas-ci la chaîne de caractères "txt"
.
Test de la propriété basename
La propriété basename
doit retourner l'extension du fichier, dans ce cas-ci la chaîne de caractères "test"
.
Test de la méthode dirname
La méthode dirname
doit retourner le dossier parent.
Bravo, tu as réussi cet exercice de code 🥳

Soumettre ma solution
Vous avez trouvé une solution alternative pour cet exercice ? Proposez votre solution à la communauté 👇
Seules les propositions différentes de la solution proposée par Docstring peuvent être envoyées.
Ma solution :
Mes notes
Sauvegardé