Navigation :
- Joindre des chemins avec os.path.join()
- Créer un répertoire avec os.mkdir()
- Créer des répertoires avec os.makedirs()
- Vérifier la présence de répertoires avec os.path.exists()
- Supprimer des répertoires avec os.removedirs()
- Obtenir le chemin courant avec os.getcwd()
- L’attribut __file__
- Récupérer le chemin relatif avec la méthode .realpath()
- Récupérer le chemin relatif strict avec la méthode .dirname()
- Récupérer l’extension d’un fichier avec la méthode .splitext()
- Récupérer les variable d’environnement avec .environ.get()
Ce module permet de manipuler simplement des chemins et gérer des répertoires dans votre système d’exploitation.
Un des avantages majeurs est qu’il va gérer seul les symboles de séparation des répertoire / sous Linux et MacOS ou \ sous Windows en fonction de l’OS sur lequel sera exécuté le script Python.
Pour importer le module os :
import os
La fonction os.path.join()
Cette fonction permet de concaténer automatiquement des chemins en fonction de l’OS sur lequel elle s’exécute (inversion des \ / automatique).
En argument, on lui fait passer les noms des nouveaux répertoires que l’on veut créer.
Exemple :
import os
chemin = "/home/vincent/PythonProjects/B-A-BA"
nouveau_dossier = os.path.join(chemin, "dossier", "sous_dossier")
print(nouveau_dossier)
>>> /home/vincent/PythonProjects/B-A-BA/dossier/sous_dossier
La fonction os.mkdir()
Permet de créer un seul répertoire, pas de possibilité de créer des sous-répertories :
import os
chemin = "/home/vincent/PythonProjects/B-A-BA"
dossier = os.path.join(chemin,"nouveau_dossier")
os.mkdir(dossier)
Crée un répertoire :
/home/vincent/PythonProjects/B-A-BA/nouveau_dossier
La fonction os.makedirs()
Crée un répertoire et des sous-répertoires au besoin.
import os
chemin = "/home/vincent/PythonProjects/B-A-BA"
dossier = os.path.join(chemin,"nouveau_dossier", "sous_dossier")
os.makedirs(dossier)
Crée un répertoire et un sous répertoire :
/home/vincent/PythonProjects/B-A-BA/nouveau_dossier/sous_dossier
Afin de se prévenir des erreurs en cas de création de dossier déjà existant, la fonction os.makedirs() dispose d’un argument qui permet de ne pas retourner d’erreur si ces dossier existe déjà, il s’agit de l’argument « exist_ok= True » :
import os
chemin = "/home/vincent/PythonProjects/B-A-BA"
dossier = os.path.join(chemin,"nouveau_dossier", "sous_dossier")
os.makedirs(dossier, exist_ok=True)
Va créer le dossier, qui existe ou pas :
/home/vincent/PythonProjects/B-A-BA/nouveau_dossier/sous_dossier
La fonction os.path.exists()
Vérifie la présence d’un répertoire (en argument), si le répertoire est présent, renvoi True, sinon renvoi False.
import os
chemin = "/home/vincent/PythonProjects/B-A-BA"
dossier = os.path.join(chemin,"nouveau_dossier")
if os.path.exists(dossier):
print(f"Le dossier {dossier} existe déjà")
else:
os.mkdir(dossier)
print(f"Le dossier {dossier} à bien été crée")
Si le répertoire n’est pas présent, va afficher :
>>> Le dossier /home/vincent/PythonProjects/B-A-BA/nouveau_dossier à bien été crée
Si le répertorie existe déjà :
Le dossier /home/vincent/PythonProjects/B-A-BA/nouveau_dossier existe déjà
La fonction os.removedirs()
Supprimer un répertoire et ses sous-répertoires.
chemin = "/home/vincent/PythonProjects/B-A-BA"
dossier = os.path.join(chemin,"nouveau_dossier")
os.removedirs(dossier)
Va supprimer /home/vincent/PythonProjects/B-A-BA/nouveau_dossier si il existe.
Afin d’éviter les erreurs au cas ou l’on essaye de supprimer des répertoires qui n’existent pas il est préférable d’exécuter cette fonction dans une boucle conditionnelle :
import os
chemin = os.getcwd()
newrep = os.path.join(chemin, "nouveau_dossier")
if os.path.exists(newrep):
os.removedirs(newrep)
else:
print("Ce répertoire n'existe pas")
Va supprimer le répertoire si il existe, sinon affiche le message « Ce répertoire n’existe pas »
La fonction os.getcwd()
Cette fonction renvoi sous forme de string le chemin relatif ou est exécuter le script :
import os
chemin = os.getcwd()
print(chemin)
>>> /home/vincent/PythonProjects/B-A-BA
ATTENTION, cette méthode renvoi le chemin d’où est exécuté le script et non pas le chemin relatif ou est enregistré le script.
Cette commande simple et direct est donc plutot a reserver pour des scripts simples comme des exercices mais est inutilisable sur des scripts devant être utilisés en production.
En effet il est impossible de savoir à l’avance de où seront lancés les scripts.
L’attribut __file__
Cette attribut n’est pas lié au module os et est constamment disponible dans Python. Toutefois, comme il est extrêmement utile en complément du module os, voilà en quoi il consiste :
L’attribut __file__ est tout simplement une sorte de variable qui contient toujours le nom du fichier en cours.
current_file = __file__
print(__file__)
>>> fichier_test.py
La methode .realpath()
Cette méthode renvoi le chemin complet relatif incluant le nom de son argument ou se trouve le script :
import os
current_file = __file__
my_path = os.path.realpath(__file__)
print(my_path)
>>> /home/vincent/PythonProjects/exos/fichier_test.py
ATTENTION, selon le système d’exploitation et/ou l’interpreter Python, lorsque l’on stock le résultat dans une variable, un print() de cette variable peut apparaître vide. Ce n’est toutefois qu’une question d’affichage.
La methode .dirname()
Assez similaire à la méthode .realpath() mais renvoie uniquement le chemin relatif ou est le script, sans le nom du fichier :
import os
current_file = __file__
my_path = os.path.realpath(__file__)
my_parent_path = os.path.dirname(my_path)
print(__file__)
print(my_path)
print(my_parent_path)
>>> fichier_test.py
>>> /home/vincent/PythonProjects/exos/fichier_test.py
>>> /home/vincent/PythonProjects/exos/
Pour garantir la bonne execution des scripts, une convention veut que l’on utilise cette syntaxe dans les scripts pour récupérer correctement le chemin relatif et cela d’où soit lancer le script :
import os
cwd = os.path.dirname(os.path.realpath(__file__))
print(cwd)
La méthode .splitext()
Cette méthode permet de découper une string avant une extension, elle la stock alors dans un tuple :
import os
fichier = "/home/vincent/fichier.json"
extention = os.path.splitext(fichier)
print(extention)
>>> ('/home/vincent/fichier', '.json')
On peut récupérer le type d’extension en récupérant la dernière valeur de ce tuple (index -1) puis en supprimant le . avec la méthode .strip() :
import os
fichier = "/home/vincent/fichier.json"
ext = os.path.splitext(fichier)[-1]
ext_clean = ext.strip(".")
print(ext_clean)
>>> json
Récupérer les variable d’environnement avec .environ.get()
import os
env_var = os.environ.get("HOME")
print(env_var)
>>> /home/vincent
0 commentaire