Maison >développement back-end >Tutoriel Python >Pourquoi mon itération de fichier Python échoue-t-elle lors des tentatives ultérieures ?

Pourquoi mon itération de fichier Python échoue-t-elle lors des tentatives ultérieures ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-30 02:17:17605parcourir

Why Does My Python File Iteration Fail on Subsequent Attempts?

Problème d'itération de fichier avec tentatives ultérieures

L'itération sur un fichier à l'aide de la boucle for est largement utilisée en Python pour traiter les données ligne par ligne. Cependant, un problème intrigant survient lorsque vous essayez d'itérer plusieurs fois sur le même fichier.

Lorsque vous tentez d'itérer sur un fichier ouvert une deuxième fois, la méthode readlines() ne produit aucun résultat, même si la lecture de l'intégralité du fichier a réussi. sur l'itération initiale. Pour résoudre ce problème, il devient nécessaire soit de fermer le fichier et de le rouvrir, soit d'utiliser f.seek(0) pour réinitialiser le pointeur de fichier.

Comprendre ce comportement implique de reconnaître que l'opération initiale readlines() lit le fichier entier en mémoire. Cela signifie que lorsque vous essayez d'itérer une deuxième fois, il n'y a plus de données à lire car le pointeur de fichier a atteint la fin.

Pour éviter de telles limitations, pensez à utiliser la syntaxe with, qui gère automatiquement la fermeture du fichier. La modification suivante garantit une itération appropriée :

with open('baby1990.html', 'rU') as f:
  for line in f:
     print(line)

Cette approche garantit que le fichier est automatiquement fermé une fois le bloc terminé, permettant ainsi plusieurs itérations réussies sans avoir besoin de fermeture et de réouverture manuelles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn