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)
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)
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!