一、文件迭代器
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