Comment vérifier si un fichier existe 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 à vérifier si un fichier existe en Python en utilisant différentes méthodes. Le laboratoire commence par une introduction aux chemins de fichiers (file paths), en expliquant la différence entre les chemins absolus et relatifs. Vous créerez un fichier texte d'exemple et un script Python pour démontrer comment obtenir le répertoire de travail actuel et définir à la fois les chemins relatifs et absolus vers le fichier.

Le laboratoire vous guidera ensuite à travers l'utilisation de la fonction os.path.exists() et de l'objet pathlib.Path pour vérifier l'existence d'un fichier. Ces méthodes offrent des moyens fiables de déterminer si un fichier existe avant d'essayer de le lire ou d'y écrire, évitant ainsi les erreurs potentielles dans vos programmes Python.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") 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/build_in_functions -.-> lab-559511{{"Comment vérifier si un fichier existe en Python"}} python/importing_modules -.-> lab-559511{{"Comment vérifier si un fichier existe en Python"}} python/standard_libraries -.-> lab-559511{{"Comment vérifier si un fichier existe en Python"}} python/file_operations -.-> lab-559511{{"Comment vérifier si un fichier existe en Python"}} python/os_system -.-> lab-559511{{"Comment vérifier si un fichier existe en Python"}} end

Introduction aux chemins de fichiers (File Paths)

Dans cette étape, nous allons explorer le concept des chemins de fichiers en Python. Comprendre les chemins de fichiers est essentiel pour lire et écrire dans des fichiers, ainsi que pour naviguer dans votre système de fichiers à l'intérieur de vos programmes Python.

Un chemin de fichier est essentiellement l'adresse d'un fichier ou d'un répertoire sur votre ordinateur. Il existe deux types principaux de chemins de fichiers :

  • Chemins absolus (Absolute paths) : Ces chemins indiquent l'emplacement complet d'un fichier ou d'un répertoire, en commençant par le répertoire racine de votre système de fichiers. Par exemple, sur un système Linux, un chemin absolu pourrait ressembler à /home/labex/project/my_file.txt.
  • Chemins relatifs (Relative paths) : Ces chemins spécifient l'emplacement d'un fichier ou d'un répertoire par rapport à votre répertoire de travail actuel. Par exemple, si votre répertoire de travail actuel est /home/labex/project, alors le chemin relatif my_file.txt ferait référence au même fichier que le chemin absolu /home/labex/project/my_file.txt.

Commençons par créer un simple fichier texte dans votre répertoire ~/project en utilisant l'éditeur VS Code. Créez un nouveau fichier nommé my_file.txt et ajoutez le contenu suivant :

Hello, LabEx!
This is a test file.

Enregistrez le fichier dans le répertoire ~/project.

Maintenant, créons un script Python pour interagir avec ce fichier. Créez un nouveau fichier nommé file_paths.py dans le même répertoire ~/project et ajoutez le code suivant :

import os

## Get the current working directory
current_directory = os.getcwd()
print("Current working directory:", current_directory)

## Define a relative path to the file
relative_path = "my_file.txt"
print("Relative path:", relative_path)

## Define an absolute path to the file
absolute_path = os.path.join(current_directory, relative_path)
print("Absolute path:", absolute_path)

Dans ce script :

  • Nous importons le module os, qui fournit des fonctions pour interagir avec le système d'exploitation.
  • Nous utilisons os.getcwd() pour obtenir le répertoire de travail actuel.
  • Nous définissons un chemin relatif vers le fichier my_file.txt.
  • Nous utilisons os.path.join() pour combiner le répertoire de travail actuel et le chemin relatif afin de créer un chemin absolu.

Maintenant, exécutons le script. Ouvrez votre terminal dans VS Code et accédez au répertoire ~/project (vous devriez déjà être là par défaut). Ensuite, exécutez le script en utilisant la commande suivante :

python file_paths.py

Vous devriez voir une sortie similaire à ceci :

Current working directory: /home/labex/project
Relative path: my_file.txt
Absolute path: /home/labex/project/my_file.txt

Cela démontre comment obtenir le répertoire de travail actuel et construire à la fois des chemins de fichiers relatifs et absolus en Python. Comprendre ces concepts est fondamental pour travailler avec des fichiers et des répertoires dans vos programmes Python.

Utilisation de os.path.exists()

Dans cette étape, nous allons apprendre à utiliser la fonction os.path.exists() pour vérifier si un fichier ou un répertoire existe. Il s'agit d'une opération fondamentale lorsqu'on travaille avec des fichiers, car elle vous permet de gérer les cas où un fichier pourrait manquer ou un répertoire ne serait pas présent.

La fonction os.path.exists() prend un seul argument : le chemin du fichier ou du répertoire que vous souhaitez vérifier. Elle retourne True si le fichier ou le répertoire existe, et False sinon.

Modifions le script file_paths.py que nous avons créé à l'étape précédente pour utiliser os.path.exists(). Ouvrez le fichier file_paths.py dans votre éditeur VS Code et ajoutez le code suivant :

import os

## Get the current working directory
current_directory = os.getcwd()

## Define a relative path to the file
relative_path = "my_file.txt"

## Define an absolute path to the file
absolute_path = os.path.join(current_directory, relative_path)

## Check if the file exists using the relative path
if os.path.exists(relative_path):
    print("The relative path 'my_file.txt' exists.")
else:
    print("The relative path 'my_file.txt' does not exist.")

## Check if the file exists using the absolute path
if os.path.exists(absolute_path):
    print("The absolute path", absolute_path, "exists.")
else:
    print("The absolute path", absolute_path, "does not exist.")

## Check if a directory exists
directory_path = current_directory
if os.path.exists(directory_path):
    print("The directory", directory_path, "exists.")
else:
    print("The directory", directory_path, "does not exist.")

## Check if a non-existent file exists
non_existent_file = "non_existent_file.txt"
if os.path.exists(non_existent_file):
    print("The file", non_existent_file, "exists.")
else:
    print("The file", non_existent_file, "does not exist.")

Dans ce script :

  • Nous utilisons os.path.exists() pour vérifier si le fichier my_file.txt existe, en utilisant à la fois le chemin relatif et le chemin absolu.
  • Nous vérifions également si le répertoire actuel existe, ce qui devrait toujours être le cas.
  • Enfin, nous vérifions si un fichier inexistant existe, ce qui devrait retourner False.

Maintenant, exécutons à nouveau le script. Ouvrez votre terminal dans VS Code et exécutez le script en utilisant la commande suivante :

python file_paths.py

Vous devriez voir une sortie similaire à ceci :

The relative path 'my_file.txt' exists.
The absolute path /home/labex/project/my_file.txt exists.
The directory /home/labex/project exists.
The file non_existent_file.txt does not exist.

Cela démontre comment utiliser os.path.exists() pour vérifier l'existence de fichiers et de répertoires dans vos programmes Python. C'est une étape cruciale avant d'essayer de lire ou d'écrire dans un fichier, car cela peut éviter les erreurs et garantir que votre programme se comporte comme prévu.

Vérification avec pathlib.Path

Dans cette étape, nous allons explorer le module pathlib, qui offre une approche orientée objet pour interagir avec les fichiers et les répertoires. Nous allons nous concentrer plus particulièrement sur l'utilisation de pathlib.Path pour vérifier l'existence de fichiers et de répertoires, offrant une alternative à os.path.exists().

Le module pathlib propose une approche plus moderne et intuitive pour manipuler les chemins de fichiers par rapport au module plus ancien os.path. Il représente les chemins de fichiers sous forme d'objets, vous permettant d'effectuer diverses opérations en utilisant les méthodes de ces objets.

Modifions le script file_paths.py sur lequel nous avons travaillé pour utiliser pathlib.Path. Ouvrez le fichier file_paths.py dans votre éditeur VS Code et ajoutez le code suivant :

import os
from pathlib import Path

## Get the current working directory
current_directory = os.getcwd()

## Define a relative path to the file
relative_path = "my_file.txt"

## Define an absolute path to the file
absolute_path = os.path.join(current_directory, relative_path)

## Create Path objects for relative and absolute paths
relative_path_obj = Path(relative_path)
absolute_path_obj = Path(absolute_path)

## Check if the file exists using the relative path object
if relative_path_obj.exists():
    print("The relative path 'my_file.txt' exists (using pathlib).")
else:
    print("The relative path 'my_file.txt' does not exist (using pathlib).")

## Check if the file exists using the absolute path object
if absolute_path_obj.exists():
    print("The absolute path", absolute_path, "exists (using pathlib).")
else:
    print("The absolute path", absolute_path, "does not exist (using pathlib).")

## Check if a directory exists using pathlib
directory_path_obj = Path(current_directory)
if directory_path_obj.exists():
    print("The directory", current_directory, "exists (using pathlib).")
else:
    print("The directory", current_directory, "does not exist (using pathlib).")

## Check if a non-existent file exists using pathlib
non_existent_file = "non_existent_file.txt"
non_existent_path_obj = Path(non_existent_file)
if non_existent_path_obj.exists():
    print("The file", non_existent_file, "exists (using pathlib).")
else:
    print("The file", non_existent_file, "does not exist (using pathlib).")

Dans ce script :

  • Nous importons la classe Path du module pathlib.
  • Nous créons des objets Path pour le chemin relatif et le chemin absolu du fichier my_file.txt.
  • Nous utilisons la méthode exists() des objets Path pour vérifier si le fichier existe.
  • Nous vérifions également l'existence du répertoire actuel et d'un fichier inexistant en utilisant pathlib.

Maintenant, exécutons à nouveau le script. Ouvrez votre terminal dans VS Code et exécutez le script en utilisant la commande suivante :

python file_paths.py

Vous devriez voir une sortie similaire à ceci :

The relative path 'my_file.txt' exists (using pathlib).
The absolute path /home/labex/project/my_file.txt exists (using pathlib).
The directory /home/labex/project exists (using pathlib).
The file non_existent_file.txt does not exist (using pathlib).

Cela démontre comment utiliser pathlib.Path comme alternative à os.path.exists() pour vérifier l'existence de fichiers et de répertoires. Le module pathlib offre une approche plus orientée objet et souvent plus lisible pour interagir avec les chemins de fichiers en Python.

Résumé

Dans ce laboratoire (lab), nous avons commencé par explorer le concept de chemins de fichiers en Python, en distinguant les chemins absolus des chemins relatifs. Nous avons appris que les chemins absolus indiquent l'emplacement complet d'un fichier, tandis que les chemins relatifs spécifient l'emplacement par rapport au répertoire de travail actuel.

Ensuite, nous avons créé un fichier texte nommé my_file.txt et un script Python file_paths.py pour démontrer comment obtenir le répertoire de travail actuel à l'aide de os.getcwd() et comment définir à la fois des chemins relatifs et absolus vers le fichier créé en utilisant le module os.