Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Gestionnaires de Contexte Imbriqués et Multiples | Advanced File Handling & Context Managers
Concepts Avancés de Python

Gestionnaires de Contexte Imbriqués et Multiples

Glissez pour afficher le menu

Lorsque vous travaillez avec plusieurs ressources en Python – comme ouvrir plusieurs fichiers en même temps – il est souvent nécessaire de s'assurer que chaque ressource est correctement acquise et libérée. C'est là que les gestionnaires de contexte imbriqués et multiples deviennent particulièrement utiles. La vidéo ci-dessus présente deux approches : l'imbrication des instructions with et l'utilisation de plusieurs gestionnaires de contexte sur une seule ligne.

Imbriquer des instructions with signifie placer un bloc with à l'intérieur d'un autre. Cela est utile lorsque l'utilisation d'une ressource dépend d'une autre. Par exemple, vous pouvez lire à partir d'un fichier et écrire dans un autre, en vous assurant que les deux fichiers sont correctement gérés :

with open('input.txt', 'r') as infile:
    with open('output.txt', 'w') as outfile:
        for line in infile:
            outfile.write(line.upper())

Cependant, Python permet également d'ouvrir les deux fichiers dans une seule instruction with, en séparant chaque gestionnaire de contexte par une virgule. Cette approche rend votre code plus lisible et garantit que chaque ressource est libérée dans l'ordre inverse de son acquisition. Cela signifie que la dernière ressource ouverte sera la première à être fermée à la fin du bloc.

# Open two files simultaneously using a single 'with' statement
with open('input.txt', 'r') as infile, open('output.txt', 'w') as outfile:
    for line in infile:
        outfile.write(line.lower())
# When the block ends, outfile is closed first, then infile

Utiliser plusieurs gestionnaires de contexte sur une seule ligne n'est pas seulement une question de syntaxe – c'est une méthode robuste pour gérer plusieurs ressources à la fois. Cela est particulièrement important lors de la manipulation de fichiers, de connexions réseau ou de verrous qui doivent toujours être correctement libérés afin d'éviter les fuites de ressources ou les interblocages.

Note
Approfondir
question mark

Laquelle des affirmations décrit correctement l'ordre dans lequel les ressources sont libérées lors de l'utilisation de plusieurs gestionnaires de contexte dans une seule instruction with ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 6

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 2. Chapitre 6
some-alt