Question

python 2, les objets de fichier ont une méthode xreadlines () qui retourne un itérateur qui lit le fichier une ligne à la fois. En Python 3, la méthode xreadlines () n'existe plus, et realines () retourne encore une liste (non un itérateur). Est-ce que Python 3 a quelque chose de similaire à xreadlines ()?

Je sais que je peux faire

for line in f:

au lieu de

for line in f.xreadlines():

Mais je voudrais aussi xreadlines d'utilisation () sans boucle:

print(f.xreadlines()[7]) #read lines 0 to 7 and prints line 7
Était-ce utile?

La solution

L'objet fichier lui-même est déjà un itérable.

>>> f = open('1.txt')
>>> f
<_io.TextIOWrapper name='1.txt' encoding='UTF-8'>
>>> next(f)
'1,B,-0.0522642316338,0.997268450092\n'
>>> next(f)
'2,B,-0.081127897359,2.05114559572\n'

Utilisez itertools.islice pour obtenir un élément arbitraire d'un itérable.

>>> f.seek(0)
0
>>> next(islice(f, 7, None))
'8,A,-0.0518101108474,12.094341554\n'

Autres conseils

comment de cette (expression du générateur):

>>> f = open("r2h_jvs")
>>> h = (x for x in f)
>>> type(h)
<type 'generator'>`
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top