常规方法读取大文件时读取速度慢且可能造成内存不足
f = open('/etc/passwd') lines = f.readlines() # 可以进行切片操作 for line in lines[10:20]: print(line) f.close()
迭代读取
1 from itertools import islice 2 3 f = open('/etc/passwd') 4 5 #f.seek(0) # 返回到文件头部 6 7 8 # islice(f,20) # 前20行 9 # islice(f,20,None) # 第20行到末尾) 10 for line in islice(f, 20, 30): # 第20行读取到30行 11 print(line) 12 13 14 f.close()
迭代器资源会消耗
In [1]: from itertools import islice In [2]: t = iter(range(20)) In [3]: for x in islice(t, 5, 10): ...: print(x) ...: 5 6 7 8 9 In [4]: for x in t: ...: print(x) ...: 10 11 12 13 14 15 16 17 18 19