Table of Contents
Gestion de fichiers et de répertoires en Python : Un guide complet pour les développeurs avancés
===========================================================
Introduction
La gestion des fichiers et des répertoires est une tâche fondamentale dans le développement informatique. En effet, il est souvent nécessaire de traiter des données stockées dans des fichiers ou de manipuler des répertoires pour organiser les données. Dans ce guide, nous allons présenter les différentes façons de gérer les fichiers et les répertoires en Python, ainsi que certaines astuces et bonnes pratiques à connaître.
Écrire dans un fichier
Pour écrire du contenu dans un fichier, vous pouvez utiliser la fonction print() avec l’option file=. Voici un exemple :
with open('fred.txt', 'w') as outfile:
s = "I'm Not Dead Yet!"
print(s, file=outfile)
Il est important de noter que si vous souhaitez écrire dans plusieurs fichiers à la fois, vous pouvez utiliser une variable pour spécifier le fichier et la réécrire à chaque itération.
myfile = None
print(s, file=myfile)
print(s, file=None)
Vérifier l’existence d’un fichier ou d’une emplacement
Il existe plusieurs façons de vérifier si un fichier ou un emplacement existe. La méthode la plus simple consiste à essayer d’ouvrir le fichier et à attraper l’exception IOError qui sera levée si le fichier n’existe pas.
import errno
try:
with open(path) as f:
# Fichier existant
except IOError as e:
if e.errno != errno.ENOENT:
raise
Il est également possible d’utiliser la fonction os.path.exists() pour vérifier si un emplacement existe.
import os
if os.path.exists(path):
# Emplacement existant
Lecture et écriture de fichiers
Lorsque vous travaillez avec des fichiers, il est souvent nécessaire de les lire ou d’écrire dans eux. Voici quelques exemples de code pour montrer comment faire cela.
# Lecture d'un fichier
with open('filename.txt', 'r') as f:
for line in f:
print(line)
# Écriture dans un fichier
with open('filename.txt', 'w') as f:
f.write("Contenu du fichier")
Il est important de noter que les fichiers doivent être fermés après utilisation pour éviter les problèmes de mémoire.
Accès aléatoire à des fichiers
Lorsque vous avez besoin d’accéder aux données stockées dans un fichier de manière aléatoire, vous pouvez utiliser la bibliothèque mmap. Cette bibliothèque permet de mapper le contenu du fichier en mémoire, ce qui vous permet de lire ou écrire n’importe où dans le fichier.
import mmap
with open('filename.ext', 'r') as fd:
mm = mmap.mmap(fd.fileno(), 0)
print(mm[5:10])
Remplacement de texte dans un fichier
Pour remplacer du texte dans un fichier, vous pouvez utiliser la fonction fileinput. Cette bibliothèque permet de lire le contenu d’un fichier et de l’écrire à nouveau avec des modifications.
import fileinput
replacements = {'Search1': 'Replace1', 'Search2': 'Replace2'}
for line in fileinput.input('filename.txt', inplace=True):
for search_for, replace_with in replacements.items():
line = line.replace(search_for, replace_with)
print(line, end='')
Vérification si un fichier est vide
Pour vérifier si un fichier est vide, vous pouvez utiliser la fonction os.stat() pour obtenir les informations sur le fichier et vérifier la taille du fichier.
import os
if os.stat(path_to_file).st_size == 0:
# Fichier vide
Lecture d’un fichier entre deux lignes spécifiques
Pour lire un fichier entre deux lignes spécifiques, vous pouvez utiliser la fonction itertools.islice() pour ignorer les premières lignes et les dernières lignes.
import itertools
with open('myfile.txt', 'r') as f:
for line in itertools.islice(f, 12, 30):
# Faire quelque chose ici
Copie d’un arbre de répertoires
Pour copier un arbre de répertoires, vous pouvez utiliser la fonction shutil.copytree().
import shutil
source = '//192.168.1.2/Daily Reports'
destination = 'D:\\Reports\\Today'
shutil.copytree(source, destination)
Copie des contenus d’un fichier vers un autre
Pour copier les contenus d’un fichier vers un autre, vous pouvez utiliser la fonction open() pour ouvrir les deux fichiers et lire/ecrire les données.
with open(input_file, 'r') as in_file:
with open(output_file, 'w') as out_file:
for line in in_file:
out_file.write(line)
Bibliothèque os.path
La bibliothèque os.path offre des fonctions pour manipuler les chemins de fichiers et répertoires. Voici quelques exemples de code pour montrer comment utiliser ces fonctions.
import os
# Jointure de chemins
os.path.join('a', 'b', 'c')
# Séparation d'un composant du chemin
os.path.dirname(p)
os.path.basename(p)
# Récupération du parent répertoire
os.path.abspath(os.path.join(PATH_TO_GET_THE_PARENT, os.pardir))
Iterables et itérateurs
Un itérateur est un objet qui permet de parcourir une séquence en une seule fois. Un iterable est un objet qui peut être transformé en itérateur.
# Exemple d'itérateur
my_iterable = [1, 2, 3]
for item in my_iterable:
print(item)
# Exemple de fonction pour transformer un iterable en itérateur
def my_function(iterable):
return iter(iterable)
En conclusion, la gestion des fichiers et des répertoires est une tâche fondamentale dans le développement informatique. En utilisant les fonctions et bibliothèques présentées dans ce guide, vous devriez être en mesure de gérer efficacement vos fichiers et répertoires en Python.
Prochaines étapes
- Explorez davantage la bibliothèque
os.pathpour découvrir d’autres fonctionnalités. - Apprenez à utiliser les itérateurs et iterables pour améliorer votre code.
- Examinez les différents formats de fichiers et comment les lire/écrire en Python.
In-Article Ad
Dev Mode
Mahmoud DEVO
Senior Full-Stack Developer
I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.
Enjoyed this article?
Subscribe to get more tech content delivered to your inbox.
Related Articles
Comment gerer les exceptions en Python : un guide complet sur try, except et finally
Apprenez a gerer les erreurs en Python avec la bonne approche. Decouvrez comment utiliser les exceptions, les blocs try-except-finally, et les bonnes pratiques pour ecrire du code robuste.
Python 2 vs Python 3 : Guide Complet des Differences et Migration
Guide complet sur les differences entre Python 2 et Python 3, strategies de migration avec 2to3, bonnes pratiques, pieges courants et implementations alternatives comme IronPython et Jython.
Differences cles entre Python 2 et Python 3 : map, round, imports et plus
Guide complet de migration Python 2 vers Python 3 : decouvrez les changements de map(), round(), imports relatifs, exec() et cmp(). Exemples pratiques et bonnes pratiques.