方法一:python
with open("test_read.txt") as f: for i, v in enumerate(f): print i, ":", v print "-" * 50
方法二:code
with open("test_read.txt") as f: for i, v in enumerate(f.readlines()): print i, ":", v print "-" * 50
说明: 一、for i, v in enumerate(f) 语句将 file 对象转换成 iterable object ,既然是可迭代对象,一次只加载一个 item ,解释器不会将全部 items 放进内存,所以节省了资源。在 python 2.3 之前,要用 f.xreadlines()方法读大文件,它和 xrange 的做用同样,都是处理 iter(object),但在 2.3 后,官方明确用 for line in f 读取大文件。对象
二、for i, v in enumerate(f.readlines()) 语句和第一个相似,可是它先执行 f.readlines(),直接把 file 对象中全部的 line items 列表存进内存,在它们之上进行循环读取。 所以,读取大文件时用第一个语句,通常小文件这两个均可以内存