Python >> Tutoriel Python >  >> Python

Comment ouvrir/fermer des fichiers en toute sécurité en python 2.4

Voir docs.python.org :

Lorsque vous avez terminé avec un fichier, appelez f.close() pour le fermer et libérer toutes les ressources système occupées par le fichier ouvert. Après avoir appelé f.close(), les tentatives d'utilisation de l'objet fichier échoueront automatiquement.

Utilisez donc close() élégamment avec try/finally :

f = open('file.txt', 'r')

try:
    # do stuff with f
finally:
    f.close()

Cela garantit que même si # do stuff with f lève une exception, f sera toujours fermé correctement.

Notez que open doit apparaître à l'extérieur des try . Si open déclenche lui-même une exception, le fichier n'a pas été ouvert et n'a pas besoin d'être fermé. Aussi, si open lève une exception son résultat est pas attribué à f et c'est une erreur d'appeler f.close() .


Dans la solution ci-dessus, répétée ici :

f = open('file.txt', 'r')

try:
    # do stuff with f
finally:
   f.close()

si quelque chose de mauvais se produit (on ne sait jamais ...) après avoir ouvert le fichier avec succès et avant l'essai, le fichier ne sera pas fermé, donc une solution plus sûre est :

f = None
try:
    f = open('file.txt', 'r')

    # do stuff with f

finally:
    if f is not None:
       f.close()

Pas besoin de fermer le fichier selon la doc si vous utilisez avec :

Il est recommandé d'utiliser le mot-clé with lorsqu'il s'agit d'objets fichier. Cela a l'avantage que le fichier est correctement fermé après la fin de sa suite, même si une exception est levée en cours de route. C'est aussi beaucoup plus court que d'écrire des blocs try-finally équivalents :

>>> with open('workfile', 'r') as f:
...     read_data = f.read()
>>> f.closed
True

Plus ici :https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects