
Obtenir le nom de base, le répertoire parent, etc.
Apprenez à extraire des informations des chemins de fichiers en Python en utilisant les fonctions du module 'os.path'. Obtenez le nom de base, le répertoire parent, le nom du fichier sans extension, et plus encore.
os.path.basename() : obtenir le nom de base
La fonction `os.path.basename()` du module `os.path` permet d'obtenir le nom de base d'un chemin de fichier, c'est-à-dire la dernière partie du chemin (le nom du fichier ou du répertoire lui-même).
Syntaxe :
import os
nom_base = os.path.basename(chemin)- `chemin` : Le chemin de fichier complet (ou relatif).
- `os.path.basename(chemin)` retourne une chaîne de caractères représentant le nom de base.
Exemples :
import os
chemin = "/home/utilisateur/documents/rapport.pdf"
nom_base = os.path.basename(chemin)
print(nom_base) # Affiche "rapport.pdf"
chemin = "/home/utilisateur/images/"
nom_base = os.path.basename(chemin)
print(nom_base) # Affiche "" (car le chemin se termine par un séparateur)
chemin = "/home/utilisateur/musique"
nom_base = os.path.basename(chemin)
print(nom_base) # Affiche "musique"
chemin = "image.jpg"
nom_base = os.path.basename(chemin)
print(nom_base) # Affiche "image.jpg"Notez que `os.path.basename()` ne vérifie pas si le fichier ou le répertoire existe réellement. Il travaille uniquement sur la chaîne de caractères représentant le chemin.
os.path.dirname() : obtenir le répertoire parent
La fonction `os.path.dirname()` permet d'obtenir le nom du répertoire parent d'un fichier ou d'un répertoire.
Syntaxe :
import os
repertoire_parent = os.path.dirname(chemin)- `chemin` : Le chemin de fichier complet (ou relatif).
- `os.path.dirname(chemin)` retourne une chaîne de caractères représentant le chemin du répertoire parent.
Exemples :
import os
chemin = "/home/utilisateur/documents/rapport.pdf"
repertoire_parent = os.path.dirname(chemin)
print(repertoire_parent) # Affiche "/home/utilisateur/documents"
chemin = "/home/utilisateur/images/"
repertoire_parent = os.path.dirname(chemin)
print(repertoire_parent) # Affiche "/home/utilisateur/images"
chemin = "/home/utilisateur/musique"
repertoire_parent = os.path.dirname(chemin)
print(repertoire_parent) # Affiche "/home/utilisateur"
chemin = "image.jpg"
repertoire_parent = os.path.dirname(chemin)
print(repertoire_parent) # Affiche "" (chaîne vide, car le fichier est dans le répertoire courant)Notez que `os.path.dirname()` ne vérifie pas si le répertoire parent existe réellement. Il travaille uniquement sur la chaîne de caractères représentant le chemin.
os.path.split() : diviser le chemin en (tête, queue)
La fonction `os.path.split()` permet de diviser un chemin de fichier en deux parties : le répertoire parent (la "tête") et le nom de base (la "queue").
Syntaxe :
import os
tete, queue = os.path.split(chemin)- `chemin` : Le chemin de fichier complet (ou relatif).
- `os.path.split(chemin)` retourne un *tuple* de deux chaînes de caractères : `(tete, queue)`. `tete` est le chemin du répertoire parent (tout ce qui précède le dernier séparateur de répertoire), et `queue` est le nom de base (le dernier composant du chemin).
Exemple :
import os
chemin = "/home/utilisateur/documents/rapport.pdf"
tete, queue = os.path.split(chemin)
print("Tête :", tete) # Affiche "/home/utilisateur/documents"
print("Queue :", queue) # Affiche "rapport.pdf"`os.path.split()` est équivalent à utiliser `os.path.dirname()` et `os.path.basename()` séparément, mais en une seule opération.
os.path.splitext() : séparer le nom de fichier et l'extension
La fonction `os.path.splitext()` permet de séparer le nom de base d'un fichier de son extension.
Syntaxe :
import os
nom_sans_extension, extension = os.path.splitext(chemin)- `chemin` : Le chemin de fichier (ou juste le nom de fichier).
- `os.path.splitext(chemin)` retourne un tuple de deux chaînes de caractères : `(nom_sans_extension, extension)`. `nom_sans_extension` est le nom de base du fichier sans l'extension, et `extension` est l'extension du fichier, y compris le point (`.`). Si le fichier n'a pas d'extension, `extension` sera une chaîne vide.
Exemples :
import os
chemin = "/home/utilisateur/documents/rapport.pdf"
nom_sans_extension, extension = os.path.splitext(chemin)
print("Nom sans extension :", nom_sans_extension) # Affiche "/home/utilisateur/documents/rapport"
print("Extension :", extension) # Affiche ".pdf"
fichier = "image.jpg"
nom, ext = os.path.splitext(fichier)
print(nom, ext) # image .jpg
fichier_sans_extension = "monfichier"
nom, ext = os.path.splitext(fichier_sans_extension)
print(nom, ext) # monfichier
#Cas particulier
fichier = ".bashrc"
print(os.path.splitext(fichier)) #('.bashrc', '')
fichier = "archive.tar.gz"
print(os.path.splitext(fichier)) #('archive.tar', '.gz')Notez que `os.path.splitext()` ne sépare que la *dernière* extension. Si un fichier a plusieurs extensions (par exemple, `"archive.tar.gz"`), seule la dernière (`.gz`) sera séparée. Pour séparer toutes les extensions, vous devriez utiliser une boucle ou une autre méthode.
Combiner les fonctions
Vous pouvez combiner ces fonctions pour extraire différentes parties d'un chemin de fichier :
import os
chemin = "/home/utilisateur/documents/rapport.final.pdf"
# Obtenir le répertoire parent
repertoire_parent = os.path.dirname(chemin)
print("Répertoire parent :", repertoire_parent) # /home/utilisateur/documents
# Obtenir le nom de base
nom_base = os.path.basename(chemin)
print("Nom de base :", nom_base) # rapport.final.pdf
# Séparer le nom de base et l'extension
nom_sans_extension, extension = os.path.splitext(nom_base)
print("Nom sans extension :", nom_sans_extension) # rapport.final
print("Extension :", extension) # .pdf
# Obtenir le nom du fichier sans aucune extension (en utilisant splitext deux fois):
nom_fichier, _ = os.path.splitext(nom_sans_extension)
print("Nom du fichier :", nom_fichier) # rapportEn combinant ces fonctions, vous pouvez extraire et manipuler n'importe quelle partie d'un chemin de fichier de manière portable et efficace.