Gestion des Fichiers en Python : Lecture, Ecriture et Manipulation de Repertoires

Guide complet pour gerer les fichiers en Python : lecture, ecriture, copie et manipulation de repertoires avec os, pathlib et shutil.

Mahmoud DEVO
Mahmoud DEVO
December 27, 2025 4 min read
Gestion des Fichiers en Python : Lecture, Ecriture et Manipulation de Repertoires

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.path pour 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.
Advertisement

In-Article Ad

Dev Mode

Share this article

Mahmoud DEVO

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