pour ligne en open(filename)
J'ai souvent voir le code python similaire à
for line in open(filename):
do_something(line)
Quand le nom de fichier fermé avec ce code?
Il serait mieux d'écrire
with open(filename) as f:
for line in f.readlines():
do_something(line)
Vous devez vous connecter pour publier un commentaire.
filename
serait fermé lorsqu'il est hors de portée. Qui, normalement, serait la fin de la méthode.Oui, il est préférable d'utiliser
with
.Python Cookbook, Page 59.
f
au lieu defilename
dans "filename
serait fermé..."open(filename)
serait fermé lorsqu'il est hors de portée, c'est à dire, lors de l'itération se termine.La
with
partie est meilleure parce qu'elle fermez le fichier par la suite.Vous n'avez même pas à utiliser
readlines()
.for line in file
est assez.Je ne pense pas que la première ferme.
Baisse
.readlines()
. Il est redondant et indésirables pour les gros fichiers (en raison de la consommation de mémoire). La variante avec'with'
bloc de toujours fermer le fichier.Quand le dossier sera fermé dans la nue
'for'
-boucle variante dépend de Python de mise en œuvre.python est le garbage collector - disponible a de comptage de référence de sauvegarde et un cycle de détection de garbage collector.
Des objets de fichiers à proximité de leur descripteur de fichier lorsque le sont supprimés/finalisé.
Ainsi, le fichier sera finalement fermée et disponible sera fermé dès que la boucle se termine.