Maison >développement back-end >Tutoriel Python >Pourquoi itérer deux fois sur un fichier Python produit-il des résultats inattendus ?

Pourquoi itérer deux fois sur un fichier Python produit-il des résultats inattendus ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-06 04:19:09748parcourir

Why Does Iterating Over a Python File Twice Produce Unexpected Results?

Itérer deux fois sur un fichier : comprendre le mécanisme d'itération de fichiers de Python

En Python, itérer sur un fichier implique de lire ligne par ligne à l'aide d'une boucle construction. Cependant, tenter de parcourir le même fichier une deuxième fois donne souvent un résultat inattendu : aucune sortie.

Ce comportement est dû au mécanisme d'itération de fichier sous-jacent dans Python. Lorsque vous exécutez la première boucle :

for line in f.readlines():
    print(line)

le fichier est lu jusqu'à sa fin. Ceci est analogue à la lecture d’un lecteur de cassette jusqu’à la fin de la cassette. Une fois la fin atteinte, il n'y a plus de données à lire.

Pour parcourir à nouveau le fichier, vous devez réinitialiser le pointeur du fichier au début. Ceci peut être réalisé de deux manières :

1. Utilisation de f.seek(0) :

f.seek(0)
for line in f.readlines():
    print(line)

L'appel de f.seek(0) repositionne le pointeur de fichier au début du fichier, vous permettant de le relire.

2. Fermeture et réouverture du fichier :

f.close()
f = open('baby1990.html', 'rU')
for line in f.readlines():
    print(line)

La fermeture et la réouverture du fichier réinitialisent automatiquement le pointeur du fichier au début.

Alternative : utilisation avec Block :

L'instruction with offre un moyen plus pratique et plus sûr de travailler avec files :

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

Dans le bloc with, le fichier est automatiquement fermé à la sortie du bloc, quelles que soient les exceptions ou les boucles. Cela élimine le besoin de gestion manuelle des fichiers.

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