Maison > développement back-end > Tutoriel Python > Pourquoi mon itération de fichier Python échoue-t-elle après le premier passage ?

Pourquoi mon itération de fichier Python échoue-t-elle après le premier passage ?

DDD
Libérer: 2024-12-04 05:09:14
original
350 Les gens l'ont consulté

Why Does My Python File Iteration Fail After the First Pass?

Difficultés d'itération de fichiers après le passage initial

Lors de la programmation, parcourir les fichiers est une tâche courante. Cependant, des comportements inattendus peuvent parfois survenir. Dans ce cas, parcourir un fichier en Python fonctionne initialement mais ne produit par la suite aucun résultat. Ceci est illustré par le code suivant :

import codecs
file = codecs.open('baby1990.html', 'r',encoding='utf-8', errors='ignore')
for line in file.readlines():
    print(line)
Copier après la connexion

Lors de l'exécution de ce code, le contenu du fichier est correctement imprimé. Cependant, une deuxième tentative de parcourir le même fichier en utilisant la ligne for dans file.readlines() : ne produit aucun résultat.

Ce comportement découle de la nature de l'itération du fichier. Lors de l'itération dans un fichier, le pointeur chargé de lire le fichier avance jusqu'à ce que la fin du fichier soit atteinte. Lors de l'itération initiale, le pointeur progresse du début du fichier jusqu'à la fin. Lors d'une deuxième tentative d'itération, le pointeur est toujours à la fin du fichier et il n'y a plus de données à lire.

Pour résoudre ce problème, le pointeur du fichier doit être réinitialisé au début. Ceci peut être réalisé soit en utilisant la méthode f.seek(0) pour repositionner explicitement le pointeur, soit en fermant et en rouvrant le fichier.

Vous pouvez également utiliser l'instruction with de Python, qui ferme automatiquement un fichier après son exécution, en veillant à ce que le pointeur de fichier soit réinitialisé. Un exemple serait :

with codecs.open('baby1990.html', 'r',encoding='utf-8', errors='ignore') as file:  
    for line in file.readlines():  
        print(line)  
Copier après la connexion

Ce code permet plusieurs itérations sans rencontrer le même problème.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal