CodeGym /Cours /Python SELF FR /Travail avec les répertoires

Travail avec les répertoires

Python SELF FR
Niveau 21 , Leçon 6
Disponible

7.1 Opérations principales

Travailler avec des fichiers, vous avez appris, maintenant allons travailler avec les répertoires. Parfois, cela ressemble à travailler avec des fichiers, parfois non. Les répertoires ont leur propre spécificité. Les fonctions principales pour travailler avec les répertoires sont fournies par les modules os et shutil.

Opérations principales avec les répertoires :

Création de répertoire

Pour créer un nouveau répertoire, on utilise la fonction os.mkdir().

Exemple :


import os

# Création d'un nouveau répertoire
os.mkdir('new_directory')
print("Répertoire 'new_directory' créé")

Création de plusieurs répertoires imbriqués

Pour créer plusieurs répertoires imbriqués, on utilise la fonction os.makedirs().

Exemple :


import os

# Création de plusieurs répertoires imbriqués
os.makedirs('parent_directory/child_directory')
print("Répertoires imbriqués 'parent_directory/child_directory' créés")

Suppression de répertoire

Pour supprimer un répertoire vide, on utilise la fonction os.rmdir(). Pour supprimer un répertoire avec contenu, on utilise la fonction shutil.rmtree().

Exemple :


import os

# Suppression d'un répertoire vide
os.rmdir('new_directory')
print("Répertoire 'new_directory' supprimé")

Exemple de suppression d'un répertoire avec contenu :


import shutil

# Suppression d'un répertoire avec contenu
shutil.rmtree('parent_directory')
print("Répertoire 'parent_directory' et tout son contenu supprimés")

Important ! Ne supprime jamais un répertoire avec tout son contenu. Une fois sur dix, un bug se glissera dans ton programme et tu supprimeras la moitié de tes fichiers sur le disque. Tout le monde passe par là. Ne fais jamais ça.

Il est recommandé de vérifier l'existence du répertoire avant de le supprimer à l'aide de la fonction os.path.exists(). Cela peut prévenir les erreurs liées à la suppression d'un répertoire inexistant ou d'un chemin incorrect.

Exemple :


import os
import shutil

# Vérification de l'existence du répertoire avant suppression
directory_path = 'parent_directory'
if os.path.exists(directory_path):
    shutil.rmtree(directory_path)
    print(f"Répertoire '{directory_path}' et tout son contenu supprimés")
else:
    print(f"Répertoire '{directory_path}' n'existe pas, suppression impossible")

7.2 Copie de répertoires

Déplacement et renommage de répertoire

Pour déplacer ou renommer un répertoire, on utilise la fonction os.rename().


import os

# Création de répertoire pour exemple
os.mkdir('original_directory')

# Renommage du répertoire
os.rename('original_directory', 'renamed_directory')
print("Répertoire 'original_directory' renommé en 'renamed_directory'") 

Copie de répertoire

Pour copier un répertoire, on utilise la fonction shutil.copytree(). Cette fonction non seulement copie le contenu du répertoire, mais crée aussi un nouveau répertoire dans le chemin de destination spécifié.


import os
import shutil

# Création de répertoire pour exemple
os.mkdir('source_directory')

# Copie du répertoire
shutil.copytree('source_directory', 'destination_directory')
print("Répertoire 'source_directory' copié vers 'destination_directory'")

7.3 Répertoire courant

Chaque programme lancé a une notion de « répertoire de travail courant ». C'est généralement le répertoire dans lequel le programme est lancé et où il cherche ses fichiers de service. Par exemple, tous les fichiers dont les chemins sont spécifiés sans nom de répertoire seront recherchés dans le répertoire courant.

Obtenir le répertoire de travail courant

Pour obtenir le répertoire de travail courant, on utilise la fonction os.getcwd().


import os

# Obtenir le répertoire de travail courant
current_directory = os.getcwd()
print(f"Répertoire de travail courant : {current_directory}")

Changer le répertoire de travail courant

Pour changer le répertoire de travail courant, on utilise la fonction os.chdir().


import os

# Changer le répertoire de travail courant
os.chdir('new_directory')
print(f"Répertoire de travail courant changé en : {os.getcwd()}")

Changer le répertoire de travail courant peut affecter les chemins vers les fichiers qui sont spécifiés par rapport au répertoire actuel. Soyez attentif lors du changement de répertoire, car cela peut entraîner des erreurs si le programme attend un fichier dans le répertoire d'origine.

Vérification de l'existence d'un répertoire

Pour vérifier l'existence d'un répertoire, on utilise la fonction os.path.exists().


import os

# Vérification de l'existence d'un répertoire
directory_path = 'new_directory'
if os.path.exists(directory_path):
    print(f"Répertoire '{directory_path}' existe")
else:
    print(f"Répertoire '{directory_path}' n'existe pas")

Obtenir le chemin absolu du répertoire

Pour obtenir le chemin absolu, on utilise la fonction os.path.abspath().


import os

# Obtenir le chemin absolu du répertoire
relative_path = 'example_directory'
absolute_path = os.path.abspath(relative_path)
print(f"Chemin absolu : {absolute_path}")

7.4 Contenu du répertoire

Obtenir une liste de fichiers et de répertoires

Pour obtenir une liste de fichiers et de répertoires dans le répertoire spécifié on utilise la fonction os.listdir().


import os

# Obtenir une liste de fichiers et de répertoires dans le répertoire courant
contents = os.listdir('.')
print(f"Contenu du répertoire courant : {contents}")

Tu peux travailler avec les fichiers et répertoires non pas comme des listes de chemins, mais comme des objets plus complexes.

Obtenir des informations sur le contenu du répertoire à l'aide de os.scandir()

La fonction os.scandir() retourne un itérateur qui rend des objets DirEntry pour chaque entrée dans le répertoire. Ces objets contiennent des informations sur les fichiers et répertoires, ce qui rend leur utilisation plus efficace par rapport à os.listdir(), surtout pour les grands catalogues.


import os

# Obtenir des informations sur le contenu du répertoire
with os.scandir('.') as entries:
    for entry in entries:
        print(f"Nom : {entry.name}, Est-ce un répertoire : {entry.is_dir()}, Est-ce un fichier : {entry.is_file()}")
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION