La bibliothèque os en Python est un module standard qui permet d'interagir avec le système d'exploitation. Elle fournit des fonctions pour manipuler les fichiers, les répertoires, les processus et les variables d'environnement.
Nous pouvons récupérer des informations sur l'utilisateur courant et sur le système d'exploitation.
import os
# Nom du système d'exploitation
print(os.name)
# Information sur le système
print(os.uname())
# Identifiant de l'utilisateur courant
print(os.getlogin())
# ID de l'utilisateur et du groupe
print(os.getuid())
print(os.getgid())
Nous pouvons lire et modifier les variables d'environnement du système.
# Afficher toutes les variables d'environnement
print(os.environ)
# Récupérer une variable d'environnement spécifique
print(os.environ.get("HOME")) # Répertoire utilisateur (Linux/Mac)
print(os.environ.get("USERNAME")) # Répertoire utilisateur (Windows)
# Définir une variable d'environnement temporairement
os.environ["TEST"] = "une_valeur"
print(os.environ.get("TEST"))
Nous exécutons une commande système pour lister les fichiers et répertoires : sous Linux/Mac, nous utilisons ls -l, et sous Windows, la commande dir est utilisée.
os.system("ls -l") # Sur Linux / MAC
os.system("dir") # Sur Windows
Pour capturer le résultat de la commande, on utilise subprocess (qui est recommandé)
import subprocess
result = subprocess.run(["ls", "-l"], capture_output=True, text=True)
print(result.stdout)
Nous pouvons obtenir l'identifiant du processus courant.
# Obtenir l'ID du processus en cours d'exécution
print(os.getpid())
# Obtenir l'ID du parent du processus en cours
print(os.getppid())
# Lancer un autre programme
os.system("python3 --version")
Nous créons des dossiers simples ou imbriqués, supprimons un dossier vide et effaçons un dossier avec tout son contenu.
# créer un dossier
os.mkdir("mon_dossier")
# Créer plusieurs dossiers imbriqués
os.makedirs("mon_dossier/sous_dossier", exist_ok=True)
# Supprimer un dossier vide
os.rmdir("mon_dossier")
# Supprimer un fichier
os.remove("mon_fichier.txt")
# Supprimer un dossier avec son contenu
import shutil
shutil.rmtree("mon_dossier")
Nous allons afficher la liste des fichiers et dossiers du répertoire courant.
contenu = os.listdir(".")
print(contenu)
Nous utilisons os.walk() pour parcourir tous les fichiers du répertoire courant.
for root, dirs, files in os.walk("."):
print(f"Dossier actuel : {root}")
print(f"Sous-dossiers : {dirs}")
print(f"Fichiers : {files}")
Nous récupérons le répertoire de travail actuel, puis changeons le répertoire courant et vérifions que la modification a bien été effectuée.
# Récupérer le répertoire de travail
cwd = os.getcwd()
print(cwd)
# Changer le répertoire courant
os.chdir("/home/user/Documents")
print(os.getcwd()) # Vérifier qu'on est bien dans le bon dossier
# Modifier les permissions d'un fichier
os.chmod("mon_fichier.txt", 0o777) # Donne tout les droits
# Vérifier les permissions d'un fichier
info = os.stat("mon_fichier.txt")
print(info.st_mode) # Affiche les permissions sous forme de nombre
Avant pathlib, os.path était la méthode standard pour manipuler les chemins.
Ce script permet de manipuler les chemins de fichiers : obtenir le chemin absolu, le répertoire parent, le nom et l’extension d’un fichier.
import os
# Récupérer le chemin absolu
chemin_absolu = os.path.abspath("fichier.txt")
print(chemin_absolu)
# Obtenir le répertoire parent
parent = os.path.dirname(chemin_absolu)
print(parent)
# Obtenir le nom du fichier
nom_fichier = os.path.basename("/home/user/fichier.txt")
print(nom_fichier) # fichier.txt
# Joindre plusieurs morceaux de chemin
chemin = os.path.join("/home", "user", "Documents", "mon_fichier.txt")
# Obtenir l'extension du fichier
nom, ext = os.path.splitext("fichier.txt")
print(nom, ext) # fichier .txt
Ce script vérifie si un chemin existe et s’il correspond à un fichier ou un répertoire.
chemin = "fichier.txt"
print(os.path.exists(chemin)) # vérifie si le fichier existe
print(os.path.isfile(chemin)) # vérifie si c'est un fichier
print(os.path.isdir(chemin)) # Vérifie si c'est un dossier