387 votes

Lire un fichier entier en Python

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?

602voto

IfLoop Points 59461

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.

1voto

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.

-2voto

Ultimate Rebel Points 1

Utilisez simplement cette fonction simple pour lire l'intégralité du fichier:

 def ReadFile(FilePath):
    return open(FilePath, 'rb').read()
 

Exemple:

 ReadFile('myfile.txt')
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X