参考:Lazy Method for Reading Big File in Python?
首先可以确定的是不能用read()
与readlines()
函数
这两个函数均将数据全部读入内存,会造成内存不足的情况。
针对数据按行划分的文件
以计算行数为例,针对几种不同的方法作了比较
- 使用
for
遍历的方法,比较美观,网上搜索到十有八九是让你这样做,尽管已经很快了但不是最快的。
输出:start = time.time() with open(dataPath, 'r') as f: count = 0 for line in f: count += 1 print(count) print(time.time() - start)
5000 0.09386205673217773
- 使用
readline()
模拟遍历,发现其实结果和第一种差不多
输出:start = time.time() with open(dataPath, 'r') as f: line = f.readline() count = 1 while line: count += 1 line = f.readline() print(count - 1) print(time.time() - start)
5000 0.09433221817016602
- 对比一下直接
readlines()
再访问?答案是反而慢了?!可能是因为遍历了两次的缘故?这个不是很懂,欢迎留言指点。start = time.time() with open(dataPath, 'r') as f: count = 0 for line in f.readlines(): count += 1 print(count) print(time