0Pricing
Python Academy · Leçon

shutil pour les opérations sur les fichiers

Copier, déplacer et archiver des fichiers

shutil pour les opérations sur les fichiers est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.

Qu'est-ce que shutil ?

Le module shutil (utilitaires du shell) propose des opérations de haut niveau sur les fichiers : copier, déplacer, supprimer des arborescences et créer des archives. Il s'appuie sur os pour les tâches courantes.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/a.txt', 'w') as f:
    f.write('hello')
print('created a.txt')

Copier un fichier

shutil.copy(src, dst) copie le contenu d'un fichier ainsi que ses bits d'autorisation vers un nouvel emplacement.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/src.txt', 'w') as f:
    f.write('data')
shutil.copy('/tmp/shutil_demo/src.txt', '/tmp/shutil_demo/copy.txt')
print(os.path.exists('/tmp/shutil_demo/copy.txt'))

copy ou copy2

shutil.copy2 fonctionne comme copy, mais conserve également les métadonnées telles que les horodatages. Utilisez-le lorsque les dates de modification sont importantes.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/m.txt', 'w') as f:
    f.write('x')
shutil.copy2('/tmp/shutil_demo/m.txt', '/tmp/shutil_demo/m2.txt')
print('copied with metadata')

Copier une arborescence complète

shutil.copytree(src, dst) copie récursivement un répertoire entier. La destination ne doit pas déjà exister, sauf si vous transmettez dirs_exist_ok=True.

import shutil, os

os.makedirs('/tmp/tree_src/sub', exist_ok=True)
with open('/tmp/tree_src/sub/f.txt', 'w') as f:
    f.write('hi')
shutil.rmtree('/tmp/tree_dst', ignore_errors=True)
shutil.copytree('/tmp/tree_src', '/tmp/tree_dst')
print(os.path.exists('/tmp/tree_dst/sub/f.txt'))

Déplacer des fichiers et des dossiers

shutil.move(src, dst) déplace ou renomme un fichier ou un répertoire. Il fonctionne entre différents systèmes de fichiers, là où os.rename échouerait.

import shutil, os

os.makedirs('/tmp/move_demo', exist_ok=True)
with open('/tmp/move_demo/old.txt', 'w') as f:
    f.write('move me')
shutil.move('/tmp/move_demo/old.txt', '/tmp/move_demo/new.txt')
print(os.path.exists('/tmp/move_demo/new.txt'))

Supprimer une arborescence de répertoires

shutil.rmtree(path) supprime un répertoire et tout ce qu'il contient. Utilisez-le avec prudence : il n'existe aucune possibilité d'annulation.

import shutil, os

os.makedirs('/tmp/to_delete/inner', exist_ok=True)
shutil.rmtree('/tmp/to_delete')
print('exists after rmtree:', os.path.exists('/tmp/to_delete'))

ignore_errors et sécurité

Transmettre ignore_errors=True à rmtree évite un plantage si le chemin est absent, ce qui est pratique pour effectuer un nettoyage avant une nouvelle exécution.

import shutil

shutil.rmtree('/tmp/never_existed', ignore_errors=True)
print('no error even though path was absent')

Créer une archive

shutil.make_archive(base_name, format, root_dir) regroupe un répertoire dans un fichier zip ou tar en un seul appel.

import shutil, os

os.makedirs('/tmp/arch_src', exist_ok=True)
with open('/tmp/arch_src/data.txt', 'w') as f:
    f.write('archive me')
path = shutil.make_archive('/tmp/my_archive', 'zip', '/tmp/arch_src')
print('created', os.path.basename(path))

Extraire une archive

shutil.unpack_archive(filename, extract_dir) effectue l'opération inverse en décompressant une archive zip ou tar dans un dossier.

import shutil, os

shutil.make_archive('/tmp/box', 'zip', '/tmp/arch_src')
shutil.unpack_archive('/tmp/box.zip', '/tmp/unpacked')
print(os.listdir('/tmp/unpacked'))

Rechercher des programmes exécutables

shutil.which(name) localise un programme dans le PATH du système, comme la commande which du shell. Elle renvoie le chemin complet ou aucune valeur.

import shutil

print(shutil.which('python3'))
print(shutil.which('definitely_not_a_real_program'))

Utilisation du disque

shutil.disk_usage(path) indique le nombre total d'octets, d'octets utilisés et d'octets libres pour le système de fichiers contenant le chemin.

import shutil

usage = shutil.disk_usage('/')
print('total GB:', round(usage.total / 1e9, 1))
print('free GB:', round(usage.free / 1e9, 1))

Vérification rapide

Vérifiez votre compréhension de shutil.

Récapitulatif

Vous avez appris à utiliser shutil pour les opérations sur les fichiers :

  • copy/copy2 copient des fichiers ; copytree copie des arborescences entières.
  • move renomme ou déplace ; rmtree supprime des arborescences.
  • make_archive/unpack_archive gèrent les formats zip et tar.
  • which et disk_usage interrogent le système.

Prochain cours : créer des outils en ligne de commande avec argparse.

Questions Fréquemment Posées

La leçon « shutil pour les opérations sur les fichiers » est-elle gratuite ?

Oui — le texte complet de « shutil pour les opérations sur les fichiers » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « shutil pour les opérations sur les fichiers » ?

Copier, déplacer et archiver des fichiers Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Python Academy ?

Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « shutil pour les opérations sur les fichiers » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?

Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Exécuter des commandes avec subprocess
  2. Capturer la sortie
  3. Environnement et module os
  4. shutil pour les opérations sur les fichiers
← Retour à Python Academy