Lorsqu'on travaille avec des chemins de fichiers en Python, le module pathlib offre une excellente manière de gérer les chemins de fichiers de façon orientée objet. Cela améliore la manipulation de chaînes pour les chemins de fichiers, qui peut être sujette aux erreurs et moins lisible :
from pathlib import Path
p = Path('.') # '.' représente le répertoire courant
print(p, type(p)) # <class 'pathlib.PosixPath'> ou <class 'pathlib.WindowsPath'> selon votre système d'exploitation
Vous pouvez joindre des chemins en utilisant l'opérateur /. Par exemple, pour représenter un fichier example.txt dans le répertoire courant, vous pouvez faire :
file_path = p / 'example.txt' # construit un nouveau chemin
print(file_path) # example.txt
L'opérateur / fonctionne quel que soit le système d'exploitation sous-jacent et utilise le séparateur de chemin approprié. Remarquez que l'opérateur / est en fait la méthode magique __truediv__() dans la classe Path, ce qui rend le travail avec les objets Path très intuitif.
Pour obtenir un chemin absolu à partir d'un objet Path, vous pouvez utiliser la méthode absolute() :
abs_path = file_path.absolute() # obtient le chemin absolu
print(abs_path) # affiche le chemin absolu, comme /home/user/example.txt sur Unix ou C:\\user\\example.txt sur Windows
La classe Path possède de nombreuses méthodes utiles pour les opérations courantes :
Path.cwd(): renvoie le répertoire de travail courant en tant que nouvel objet Path
Path.home(): renvoie le répertoire personnel en tant que nouvel objet Path
Path.exists(): vérifie si le chemin existe
Path.is_file(): vérifie si le chemin est un fichier
Path.is_dir(): vérifie si le chemin est un répertoire
Path.mkdir(): crée un nouveau répertoire à l'emplacement du chemin
Path.glob(): renvoie un générateur fournissant tous les fichiers correspondants dans le répertoire
Voyons comment certaines de ces méthodes sont utilisées :
print(Path.cwd()) # affiche le répertoire de travail courant
print(Path.home()) # affiche le répertoire personnel
if not file_path.exists(): # vérifie si un fichier existe
print(f'Le fichier {file_path} n\'existe pas.')
if file_path.is_file(): # vérifie s'il s'agit d'un fichier
print(f'{file_path} est un fichier.')
new_dir = p / 'new_dir'
new_dir.mkdir(exist_ok=True) # crée un nouveau répertoire, ne fait rien s'il existe déjà
for file in p.glob('*.txt'): # parcourt tous les fichiers .txt dans le répertoire courant
print(file)
N'oubliez pas de remplacer p par votre objet Path et 'example.txt' par le nom de votre fichier si nécessaire. Le module pathlib est un outil puissant pour la manipulation des fichiers et des répertoires en Python.
Défi : Du Relatif à l'Absolu
L'avènement des archives numériques a rendu la gestion d'un grand nombre de documents beaucoup plus accessible. Cependant, gérer les chemins vers ces documents peut parfois être un peu délicat, surtout lorsqu'il s'agit de chemins relatifs et absolus. Vous travaillez en tant que développeur de logiciels dans une entreprise d'archives numériques. Votre tâche est de créer un programme qui peut convertir des chemins relatifs en chemins absolus pour assurer un suivi et un accès appropriés aux documents.
Étant donné un chemin relatif, votre programme doit afficher le chemin absolu correspondant.
La seule ligne de l'entrée contient un seul chemin relatif.
La sortie de votre programme doit être le chemin absolu correspondant au chemin relatif saisi.