迭代读取文件

常规方法读取大文件时读取速度慢且可能造成内存不足

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

 

posted @ 2019-03-03 10:28  Ray_chen  阅读(294)  评论(0编辑  收藏  举报