6.1 Travailler avec des fichiers
Python fournit de nombreuses fonctions et modules intégrés pour travailler avec des fichiers et des répertoires. Les opérations principales sont effectuées à l'aide des modules intégrés os
, shutil
et d'autres.
Trois opérations principales avec des fichiers :
- Copie
- Déplacement
- Suppression
Pour les réaliser, le module shutil
est parfait.
Copie d'un fichier
import shutil
shutil.copy('source.txt', 'destination.txt')
Déplacement d'un fichier
import shutil
shutil.move('source.txt', 'destination.txt')
Suppression d'un fichier
import os
os.remove('example.txt')
Plus simple que jamais.
6.2 Vérification de l'existence d'un fichier
Il est souvent nécessaire de vérifier si un fichier spécifique existe ou non. Pour cela, le module os
a une méthode spéciale — exists()
.
Vérification de l'existence d'un fichier
import os
if os.path.exists('example.txt'):
print("File exists")
else:
print("File does not exist")
# Si le fichier n'existe pas, le programme exécutera les actions décrites dans le bloc else.
# Par exemple, on peut afficher un avertissement, créer un nouveau fichier ou quitter le programme.
Si le fichier n'existe pas, le programme peut gérer cela à l'aide de conditions ou lever une exception.
6.3 Vérification du type d'objet : fichier ou répertoire
Il est souvent nécessaire de vérifier si un objet est un fichier ou un répertoire. Par exemple, si vous lisez tout le contenu d'un répertoire et que les fichiers doivent être traités d'une manière, et les répertoires d'une autre.
Pour ces cas, il y a deux méthodes spéciales — isdir()
, qui vérifie si un objet est un répertoire, et isfile()
, qui vérifie si un objet est un fichier.
Vérifier si c'est un répertoire ou non
if os.path.isdir('example_directory'):
print("C'est un répertoire")
else:
print("Ce n'est pas un répertoire")
Vérifier si c'est un fichier ou non
if os.path.isfile('example_file'):
print("C'est un fichier")
else:
print("Ce n'est pas un fichier")
Ce sont des fonctions très utiles que vous utiliserez plus souvent que vous ne le pensez. :)
6.4 Travailler avec des chemins
Le module os
a un sous-module os.path
, qui contient des fonctions utiles pour travailler avec des fichiers et des répertoires. Voici quelques-unes d'entre elles :
Obtenir l'extension d'un fichier
La fonction splitext()
divise le nom d'un fichier en deux parties et renvoie une liste de deux éléments : le nom et l'extension.
import os.path
# Obtenir l'extension d'un fichier
file_path = 'example.txt'
file_extension = os.path.splitext(file_path)[1]
print(f"Extension du fichier : {file_extension}")
Obtenir le nom d'un fichier sans extension
import os.path
# Obtenir le nom d'un fichier sans extension
file_path = 'example.txt'
file_name = os.path.splitext(os.path.basename(file_path))[0]
print(f"Nom du fichier sans extension : {file_name}")
Obtenir le nom d'un fichier à partir du chemin
La fonction basename()
renvoie uniquement le nom du fichier, en supprimant tout le chemin y conduisant.
import os.path
# Obtenir le nom d'un fichier à partir du chemin
file_path = '/path/to/example.txt'
file_name = os.path.basename(file_path)
print(f"Nom du fichier : {file_name}")
Obtenir le répertoire à partir du chemin
Il est aussi facile d'obtenir uniquement le répertoire à partir du nom de fichier en utilisant la fonction dirname()
.
import os.path
# Obtenir le répertoire à partir du chemin
file_path = '/path/to/example.txt'
directory = os.path.dirname(file_path)
print(f"Répertoire : {directory}")
Concatenation des chemins
Si vous avez séparément un répertoire et un nom de fichier, vous pouvez obtenir le chemin complet vers ce fichier.
import os.path
# Concatenation des chemins
directory = '/path/to'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Chemin complet : {full_path}")
6.5 Chemins indépendants de la plateforme
Lors de la manipulation des chemins, il est important de prendre en compte les différences entre les systèmes d'exploitation. Les séparateurs de chemins peuvent varier, et le code qui fonctionne sur une plateforme peut ne pas fonctionner sur une autre. Pour éviter les problèmes lors du transfert de code entre différents systèmes d'exploitation, utilisez les fonctions os.path.join()
, os.path.abspath()
et os.path.dirname()
, qui assurent la compatibilité avec différentes plateformes.
Par exemple :
import os
# Concatenation des chemins d'une manière indépendante de la plateforme
directory = 'some_directory'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Chemin complet : {full_path}")
Obtenir le chemin absolu
Si vous avez un chemin seulement relatif au répertoire de travail actuel, mais que vous voulez le convertir en chemin absolu, il y a la fonction abspath()
pour cela.
import os.path
# Obtenir le chemin absolu
relative_path = 'example.txt'
absolute_path = os.path.abspath(relative_path)
print(f"Chemin absolu : {absolute_path}")
Important!
Utilisez toujours les fonctions système lors de la manipulation des chemins, car votre code pourrait être exécuté sur un autre système d'exploitation où le séparateur de fichiers n'est pas \
, mais /
, ou où les «:»
sont interdits dans les chemins ou autre chose.