| title | Module OS Python - Aide-mémoire Python |
|---|---|
| description | Ce module offre une manière portable d'utiliser les fonctionnalités dépendantes du système d'exploitation. |
Ce module fournit une manière portable d'utiliser des fonctionnalités dépendantes du système d'exploitation.
Pathlib vs Module OS Le module pathlib fournit beaucoup plus de fonctionnalités que celles énumérées ici, comme obtenir le nom de fichier, obtenir l'extension de fichier, lire/écrire un fichier sans l'ouvrir manuellement, etc. Consultez la documentation officielle si vous souhaitez en savoir plus.Pour un examen plus approfondi des deux, consultez la page Cheatsheet : Chemins de fichiers et de répertoires.
Sous Windows, les chemins sont écrits en utilisant des barres obliques inverses (\) comme séparateur entre les noms de dossiers. Sur les systèmes d'exploitation basés sur Unix tels que macOS, Linux et les BSD, la barre oblique avant (/) est utilisée comme séparateur de chemin. Joindre des chemins peut être un casse-tête si votre code doit fonctionner sur différentes plateformes.
Heureusement, Python nous fournit os.path.join pour gérer cela.
import os
# Joindre les composants du chemin en utilisant le séparateur correct pour l'OS
os.path.join('usr', 'bin', 'spam')usr\bin\spam
Joindre des chemins est utile si vous devez créer différents chemins de fichiers sous le même répertoire.
my_files = ['accounts.txt', 'details.csv', 'invite.docx']
# Joindre chaque nom de fichier avec le répertoire de base
for filename in my_files:
print(os.path.join('/home/labex/project', filename))/home/labex/project/accounts.txt
/home/labex/project/details.csv
/home/labex/project/invite.docx
import os
# Obtenir le répertoire de travail actuel
os.getcwd()/home/labex/project
# Changer le répertoire de travail actuel
os.chdir('/usr/bin')
# Vérifier le changement
os.getcwd()/usr/bin
import os
# Créer des répertoires de manière récursive (crée tous les répertoires parents si nécessaire)
os.makedirs('/tmp/delicious/walnut/waffles')Il existe deux façons de spécifier un chemin de fichier.
- Un chemin absolu, qui commence toujours par le dossier racine
- Un chemin relatif, qui est relatif au répertoire de travail actuel du programme
Il existe également les dossiers point (.) et double point (..). Ce ne sont pas de vrais dossiers, mais des noms spéciaux qui peuvent être utilisés dans un chemin. Un point unique (“dot”) pour un nom de dossier est un raccourci pour “ce répertoire”. Deux points (“dot-dot”) signifient “le dossier parent”.
Pour voir si un chemin est un chemin absolu :
import os
# Vérifier si le chemin est absolu (commence par la racine)
os.path.isabs('/')True
# Les chemins relatifs retournent False
os.path.isabs('..')False
Vous pouvez également extraire un chemin absolu :
import os
# Obtenir d'abord le répertoire actuel
os.getcwd()/home/labex/project
# Convertir le chemin relatif en chemin absolu
os.path.abspath('..')/home
Vous pouvez obtenir un chemin relatif à partir d'un chemin de départ vers un autre chemin.
import os
# Obtenir le chemin relatif du chemin de départ au chemin cible
os.path.relpath('/etc/passwd', '/')etc/passwd
import os
# Vérifier si le chemin existe (fichier ou répertoire)
os.path.exists('.')True
os.path.exists('setup.py')True
os.path.exists('/etc')True
os.path.exists('nonexistentfile')False
import os
# Vérifier si le chemin est un fichier
os.path.isfile('setup.py')True
os.path.isfile('/home')False
os.path.isfile('nonexistentfile')False
import os
# Vérifier si le chemin est un répertoire
os.path.isdir('/')True
os.path.isdir('setup.py')False
os.path.isdir('/spam')False
import os
# Obtenir la taille du fichier en octets
os.path.getsize('/usr/bin/python3')776192
import os
# Lister tous les fichiers et répertoires dans le chemin spécifié
os.listdir('/usr/bin')['0409', '12520437.cpx', '12520850.cpx', '5U877.ax', 'aaclient.dll',
--snip--
'xwtpdui.dll', 'xwtpw32.dll', 'zh-CN', 'zh-HK', 'zh-TW', 'zipfldr.dll']
import os
total_size = 0
# Calculer la taille totale de tous les fichiers dans le répertoire
for filename in os.listdir('/usr/bin'):
# Joindre le chemin du répertoire avec le nom de fichier et obtenir la taille
total_size = total_size + os.path.getsize(os.path.join('/usr/bin', filename))
print(total_size)1117846456
-
Appeler
os.unlink(path)supprimera le fichier au chemin spécifié. -
Appeler
os.rmdir(path)supprimera le dossier au chemin spécifié. Ce dossier doit être vide de tout fichier ou dossier.
import os
# Parcourir l'arborescence des répertoires récursivement
for folder_name, subfolders, filenames in os.walk('/tmp/delicious'):
print(f'Le dossier actuel est {folder_name}')
# Itérer sur les sous-répertoires
for subfolder in subfolders:
print(f'SOUS-DOSSIER DE {folder_name}: {subfolder}')
# Itérer sur les fichiers
for filename in filenames:
print(f'FICHIER DANS {folder_name}: filename{filename}')
print('')Le dossier actuel est /tmp/delicious
SOUS-DOSSIER DE /tmp/delicious: cats
SOUS-DOSSIER DE /tmp/delicious: walnut
FICHIER DANS /tmp/delicious: spam.txt
Le dossier actuel est /tmp/delicious/cats
FICHIER DANS /tmp/delicious/cats: catnames.txt
FICHIER DANS /tmp/delicious/cats: zophie.jpg
Le dossier actuel est /tmp/delicious/walnut
SOUS-DOSSIER DE /tmp/delicious/walnut: waffles
Le dossier actuel est /tmp/delicious/walnut/waffles
FICHIER DANS /tmp/delicious/walnut/waffles: butter.txt
- Cheatsheet : Chemins de fichiers et de répertoires
- Cheatsheet : Lecture et écriture de fichiers
- Blog : Essentiels de Pathlib
- Module : pathlib
- open()
- str()