Comment vérifier si un chemin est un répertoire en Python

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à déterminer si un chemin (path) est un répertoire en Python. Cela implique de distinguer les fichiers des répertoires à l'aide du module os.path.

Vous commencerez par créer un répertoire et un fichier, puis utiliserez os.path.isfile() et os.path.isdir() pour les identifier. Le laboratoire se concentrera ensuite sur os.path.isdir() et explorera son comportement avec différents types de chemins, offrant une compréhension pratique de la vérification de l'existence d'un répertoire en Python.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/FileHandlingGroup -.-> python/file_operations("File Operations") python/PythonStandardLibraryGroup -.-> python/os_system("Operating System and System") subgraph Lab Skills python/conditional_statements -.-> lab-559557{{"Comment vérifier si un chemin est un répertoire en Python"}} python/build_in_functions -.-> lab-559557{{"Comment vérifier si un chemin est un répertoire en Python"}} python/standard_libraries -.-> lab-559557{{"Comment vérifier si un chemin est un répertoire en Python"}} python/file_operations -.-> lab-559557{{"Comment vérifier si un chemin est un répertoire en Python"}} python/os_system -.-> lab-559557{{"Comment vérifier si un chemin est un répertoire en Python"}} end

Différencier les fichiers et les répertoires

Dans cette étape, vous apprendrez à différencier les fichiers des répertoires à l'aide de Python. Il s'agit d'une compétence fondamentale pour tout programmeur Python, car elle vous permet d'écrire des programmes capables d'interagir avec le système de fichiers de manière robuste et fiable.

Pour commencer, créons un répertoire et un fichier dans votre répertoire ~/project. Ouvrez le WebIDE, puis ouvrez le terminal.

Tout d'abord, créez un répertoire nommé my_directory :

mkdir my_directory

Ensuite, créez un fichier vide nommé my_file.txt :

touch my_file.txt

Maintenant que vous avez un répertoire et un fichier, vous pouvez utiliser Python pour déterminer lequel est lequel.

Ouvrez l'éditeur de code du WebIDE et créez un nouveau fichier nommé check_type.py dans le répertoire ~/project. Ajoutez le code suivant au fichier :

import os

file_path = "my_file.txt"
directory_path = "my_directory"

if os.path.isfile(file_path):
    print(f"{file_path} is a file")
else:
    print(f"{file_path} is not a file")

if os.path.isdir(directory_path):
    print(f"{directory_path} is a directory")
else:
    print(f"{directory_path} is not a directory")

Ce code utilise les fonctions os.path.isfile() et os.path.isdir() pour vérifier si les chemins donnés sont des fichiers ou des répertoires, respectivement.

Enregistrez le fichier check_type.py.

Maintenant, exécutez le script depuis le terminal :

python check_type.py

Vous devriez voir la sortie suivante :

my_file.txt is a file
my_directory is a directory

Cela confirme que le script Python identifie correctement my_file.txt comme un fichier et my_directory comme un répertoire.

Tester avec os.path.isdir()

Dans l'étape précédente, vous avez appris à différencier les fichiers des répertoires en utilisant à la fois os.path.isfile() et os.path.isdir(). Dans cette étape, nous allons nous concentrer spécifiquement sur os.path.isdir() et explorer son comportement avec différents types de chemins (paths).

La fonction os.path.isdir() du module os.path de Python est utilisée pour vérifier si un chemin donné correspond à un répertoire existant. Elle retourne True si le chemin est un répertoire et False dans le cas contraire. Cette fonction est particulièrement utile lorsque vous devez vous assurer qu'un chemin spécifique pointe vers un répertoire avant d'effectuer des opérations spécifiques à un répertoire.

Modifions le fichier check_type.py que vous avez créé dans l'étape précédente pour vous concentrer uniquement sur os.path.isdir(). Ouvrez check_type.py dans l'éditeur de code du WebIDE et changez son contenu comme suit :

import os

directory_path = "my_directory"
file_path = "my_file.txt"
nonexistent_path = "nonexistent_directory"

if os.path.isdir(directory_path):
    print(f"{directory_path} is a directory")
else:
    print(f"{directory_path} is not a directory")

if os.path.isdir(file_path):
    print(f"{file_path} is a directory")
else:
    print(f"{file_path} is not a directory")

if os.path.isdir(nonexistent_path):
    print(f"{nonexistent_path} is a directory")
else:
    print(f"{nonexistent_path} is not a directory")

Dans ce script modifié, nous vérifions trois chemins différents :

  • my_directory : Il s'agit d'un répertoire existant que vous avez créé dans l'étape précédente.
  • my_file.txt : Il s'agit d'un fichier existant que vous avez créé dans l'étape précédente.
  • nonexistent_path : Il s'agit d'un chemin qui n'existe pas.

Enregistrez le fichier check_type.py.

Maintenant, exécutez le script depuis le terminal :

python check_type.py

Vous devriez voir la sortie suivante :

my_directory is a directory
my_file.txt is not a directory
nonexistent_directory is not a directory

Cette sortie démontre que os.path.isdir() identifie correctement my_directory comme un répertoire et retourne False à la fois pour le fichier my_file.txt et le chemin inexistant nonexistent_directory. En effet, os.path.isdir() ne retourne True que si le chemin existe et est un répertoire.

Cet exercice renforce l'importance de vérifier qu'un chemin est un répertoire avant d'essayer d'effectuer des opérations spécifiques à un répertoire sur celui-ci.

Confirmer avec pathlib.Path.is_dir()

Dans l'étape précédente, vous avez utilisé os.path.isdir() pour vérifier si un chemin est un répertoire. Maintenant, explorons une autre façon d'obtenir le même résultat en utilisant le module pathlib, qui propose une approche orientée objet pour les chemins du système de fichiers.

Le module pathlib offre une classe Path qui représente les chemins du système de fichiers. Cette classe dispose de plusieurs méthodes pour interagir avec les fichiers et les répertoires, notamment la méthode is_dir(), qui vérifie si un chemin est un répertoire.

Pour utiliser pathlib, vous devez d'abord importer la classe Path depuis le module pathlib. Ensuite, vous pouvez créer un objet Path représentant le chemin que vous souhaitez vérifier. Enfin, vous pouvez appeler la méthode is_dir() sur l'objet Path pour déterminer s'il s'agit d'un répertoire.

Ouvrez le fichier check_type.py dans l'éditeur de code du WebIDE et modifiez son contenu comme suit :

from pathlib import Path

directory_path = Path("my_directory")
file_path = Path("my_file.txt")
nonexistent_path = Path("nonexistent_directory")

if directory_path.is_dir():
    print(f"{directory_path} is a directory")
else:
    print(f"{directory_path} is not a directory")

if file_path.is_dir():
    print(f"{file_path} is a directory")
else:
    print(f"{file_path} is not a directory")

if nonexistent_path.is_dir():
    print(f"{nonexistent_path} is a directory")
else:
    print(f"{nonexistent_path} is not a directory")

Dans ce script, nous créons des objets Path pour my_directory, my_file.txt et nonexistent_directory. Ensuite, nous utilisons la méthode is_dir() pour vérifier si chaque chemin est un répertoire.

Enregistrez le fichier check_type.py.

Maintenant, exécutez le script depuis le terminal :

python check_type.py

Vous devriez voir la sortie suivante :

my_directory is a directory
my_file.txt is not a directory
nonexistent_directory is not a directory

Comme vous pouvez le voir, la sortie est la même que dans l'étape précédente lorsque vous utilisez os.path.isdir(). La méthode pathlib.Path.is_dir() offre une alternative orientée objet pour vérifier si un chemin est un répertoire.

L'utilisation de pathlib peut rendre votre code plus lisible et plus facile à maintenir, surtout lorsqu'il s'agit de traiter des opérations complexes du système de fichiers.

Résumé

Dans ce laboratoire (lab), vous avez appris à différencier les fichiers et les répertoires en Python en utilisant le module os.path. Plus précisément, vous avez créé un répertoire et un fichier, puis utilisé os.path.isfile() et os.path.isdir() pour vérifier leur type. Le laboratoire a démontré comment utiliser ces fonctions pour déterminer si un chemin donné correspond à un fichier ou à un répertoire.