Si vous lisez un fichier entier avec content = open('Path/to/file', 'r').read()
le descripteur de fichier reste-t-il ouvert jusqu'à ce que le script se ferme? Existe-t-il une méthode plus concise pour lire un fichier entier?
Réponses
Trop de publicités?la réponse à cette question dépend quelque peu le python de mise en œuvre.
Pour comprendre ce que ce est tout au sujet, une attention particulière à la réelle file
objet. Dans votre code, que l'objet est mentionné qu'une seule fois, dans une expression, et devient inaccessible immédiatement après l' read()
retours d'appel.
Cela signifie que le fichier objet est des ordures. La seule question qui reste est de "Quand la poubelle collecter recueillir le fichier d'objet?".
dans Disponible, qui utilise un compteur de référence, ce type de déchets est tout de suite remarqué, et il sera perçue immédiatement. Ce n'est généralement pas vrai pour d'autres implémentations de python.
Une meilleure solution, assurez-vous que le fichier est fermé, est ce modèle:
with open('Path/to/file', 'r') as content_file:
content = content_file.read()
toujours fermer le fichier immédiatement après le bloc se termine, même si une exception se produit.
Cela ne lit pas nécessairement tout le fichier. Si vous voulez être certain que le fichier entier est lu, vous devez effectuer une boucle jusqu'à ce que ''
soit renvoyé.
Mais pour répondre à vos questions, le fichier sera fermé dès qu'il n'y aura plus de références à ce fichier, et non, il n'y a plus de méthode concise dans le fichier stdlib pour tenter de lire un fichier entier.