Adloun

Python (école d'ingénieur) · Chapitre 7 · Exercice

Copie de fichier

Fichiers, exceptions et modules

Énoncé

Écrire une fonction copier_fichier(source, destination) qui copie le contenu d'un fichier source vers un fichier destination.

def copier_fichier(source, destination):
    """
    Copie le contenu du fichier source vers le fichier destination.
    Retourne le nombre d'octets/caractères copiés.
    """
    try:
        with open(source, "r", encoding="utf-8") as src:
            contenu = src.read()
            
        with open(destination, "w", encoding="utf-8") as dst:
            dst.write(contenu)
            
        return len(contenu)
    except FileNotFoundError:
        print(f"Erreur : Le fichier source '{source}' n'existe pas.")
        return -1

# Test
copier_fichier("test.txt", "copie.txt")
print(compter_lignes("copie.txt"))  # Affiche 3

Corrigé

Pour éviter de saturer la mémoire vive lors de la copie de fichiers volumineux (comme des images, des vidéos ou des bases de données volumineuses), il est recommandé de lire et écrire par blocs d'octets (bytes) de taille fixe (par exemple, 4096 octets) :

def copier_fichier_blocs(source, destination, taille_bloc=4096):
    """Copie un fichier par blocs (efficace pour les gros fichiers)."""
    with open(source, "rb") as src:
        with open(destination, "wb") as dst:
            while True:
                bloc = src.read(taille_bloc)
                if not bloc:
                    break
                dst.write(bloc)

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →