一、文件迭代器
readline()每次读取文件的一行,每次调用readline方法会自动到下一行,到文件末尾时,会返回空字符串。
_next_()方法同readline()一样,只是到最后一行会引发stopiteration。
逐行读取文本的的最佳方式是用for循环每轮自动调用next,for line in open(文件名)。
readlines()一次将文件读取到内存,如果文件过大,会导致计算机内存空间不够用,效果差。
手动迭代:iter和next
f=open(文件名)
f._next_() 与next(f)的效果一样,每次调用读取一行
从技术角度讲,for循环开始时,会通过它传给iter内置函数,以便从可迭代对象中获取一个迭代器,返回的对象含有需要的next方法。
>>> L=[1,2,3]
>>> I=iter(L) #获取一个迭代对象
>>> next(I)
1
>>> next(I)
2
>>> next(L)
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
next(L)
TypeError: 'list' object is not an iterator
最初的一步对于文件对象来说是不必要的,因为文件对象有自己的迭代器,即文件对象有自己的—_next_()方法。
>>>f=open(文件名)
>>>iter(f) is f
True
>>>L=[1,2,3]
>>>iter(L) is L
False