Résolue

Pourquoi faut il refermer le fichier après l'avoir ouvert ?

# Méthodes # Fichiers

Bonjour,

C'est surement une question stupide mais je n'ai pas bien compris pourquoi est-ce qu'il faut refermer le fichier après l'avoir ouvert, quels types de problèmes peut-on avoir si on ne referme pas le fichier ?

On a peut-être vu l'instruction with avant mais je ne m'en rappel pas du tout (je ne l'ai pas encore utilisé) peux-tu m'expliquer à quoi elle sert et dans quels cas l'utilise-t-on ?

Merci !

Thibault houdon

Mentor

Salut Farouk !

Il n'y a pas de question stupide, crois-moi, la preuve, je me souviens m'être posé exactement la même quand j'ai commencé avec Python ^^ ! Ça serait peut-être une bonne idée d'ailleurs d'ajouter une partie à ce sujet dans la formation.

Si tu ouvres un fichier et que tu ne le refermes pas, deux problèmes principaux peuvent se poser.

Premièrement, tu risques d'épuiser les ressources systèmes car il y a une limite au nombre de fichiers que tu peux ouvrir en même temps. Tu peux imaginer que ton ordinateur a juste un certain nombre de mains pour tenir tous ces fichiers ouverts. Si tu ne le refermes pas, ton ordi continue à les « tenir » inutilement. Si tu ouvres un seul fichier, ça ne posera pas beaucoup de problèmes (nos ordis sont suffisamment puissant pour ça aujourd'hui), mais imagine un script qui parcours ton disque dur complet pour trouver un élément ou faire du ménage : si tu ouvres simultanément des milliers voire centaines de milliers (voir millions ^^) de fichiers en même temps sans les refermer, ça peut sérieusement ralentir ton script, ton ordinateur, voire faire planter le programme.

Deuxièmement, si tu effectues des modifications sur un fichier et que tu ne le refermes pas, il est possible que les changements ne soient pas sauvegardés correctement.

Pour éviter tous ces soucis, Python a une instruction pratique qui s'appelle with. Si tu veux lire un peu plus sur le sujet, on appelle ça un "Context Manager" et tu peux en créer toi-même et il en existe pour d'autres types de situation que l'ouverture d'un fichier. Ça sert en gros à exécuter une procédure à la fin d'un bloc d'instruction.

C'est un peu comme dire à ton ordi : "Ouvre ce fichier, fais ce que tu as à faire, et surtout, n'oublie pas de le refermer quand tu en as fini !"

Cela garantit que le fichier sera bien fermé, même si une erreur survient pendant le traitement. C'est super pratique, surtout quand on gère de gros fichiers ou des opérations critiques.

Donc, au lieu de faire :

fichier = open('foo.txt', 'w')
fichier.write('Salut le monde !')
fichier.close()

Avec with, ça donnerait plutôt :

with open('foo.txt', 'w') as fichier:
    fichier.write('Salut le monde !')

Et voilà dans ce cas, pas besoin de fichier.close() (et pas de risque de l'oublier !) : Python s'en occupe pour toi !

J'espère que c'est plus clair, n'hésite pas si tu as d'autres questions :)

Merci c'est beaucoup plus clair maintenant ! 😁

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.