开发者

What substitutes xreadlines() in Python 3?

开发者 https://www.devze.com 2023-01-12 19:48 出处:网络
In Python 2, file objects had an xreadlines() method which returned an iterator that would read the file one line at a time. In Python 3, the xreadlines() method no longer exists, and realines() still

In Python 2, file objects had an xreadlines() method which returned an iterator that would read the file one line at a time. In Python 3, the xreadlines() method no longer exists, and realines() still returns a list (not an iterator). Does Python 3 has something similar to xreadlines()?

I know I can do

for line in f:

instead of

for li开发者_如何学Cne in f.xreadlines():

But I would also like to use xreadlines() without a for loop:

print(f.xreadlines()[7]) #read lines 0 to 7 and prints line 7


The file object itself is already an iterable.

>>> 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'

Use itertools.islice to get an arbitrary element from an iterable.

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


how about this (generator expression):

>>> f = open("r2h_jvs")
>>> h = (x for x in f)
>>> type(h)
<type 'generator'>`
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号