Supposons ouvrir() lit 2 lettres à la fois. (La valeur réelle est io.DEFAULT_BUFFER_SIZE )
f=open('test.txt')
Vous avez créé un objet fichier, _io.TextIOWrapper
ce qui, en simplifiant à l'extrême, revient à [{read from 0 to io.DEFAULT_BUFFER_SIZE of test.txt}, ...}
file=iter(f)
Vous avez créé un itérateur de _io.TextIOWrapper
avec des données comme celles-ci : [{read from 0 to 1}, ... {read from n-1 to n}]
next(file)
suivant() est passé par le premier point de file
je l'ai lu et imprimé.
Prenons un exemple.
Lecture normale
test.txt
what a beautiful day
Nous allons ouvrir le fichier, iter(), et list() pour ouvrir et itérer à travers tout cela et faire une liste.
In [1]: f = open('test.txt')
In [2]: list(iter(f))
Out[2]: ['what a beautiful day']
Comme prévu.
Modification du fichier après open()
In [1]: f = open('test.txt')
Nous avons ouvert le dossier.
Nous allons maintenant ajouter hello open()
à test.txt.
test.txt
what a beautiful day
hello open()
puis iter() et list().
In [2]: list(iter(f))
Out[2]: ['what a beautiful day\n', '\n', 'hello open()']
Le contenu modifié est visible. On peut voir que open()
ne lit pas réellement le fichier.
Modification du fichier après iter()
In [1]: f = open('test.txt')
In [2]: i = iter(f)
Nous avons ouvert le fichier et iter()
d.
Nous allons maintenant ajouter hello iter()
test.txt
what a beautiful day
hello open()
hello iter()
et ensuite l'énumérer().
In [3]: list(i)
Out[3]: ['what a beautiful day\n', '\n', 'hello open()\n', '\n', 'hello iter()']
Le contenu modifié est visible. On peut aussi voir que iter()
ne lit pas réellement le fichier.