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

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

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-11
  • 2022-12-23
  • 2021-06-24
猜你喜欢
  • 2021-07-12
  • 2022-12-23
  • 2021-06-22
  • 2021-05-24
  • 2021-06-04
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案