逐行读取文本时哪种方法更好?

方法一:

with open("test_read.txt") as f:
    for i, v in enumerate(f):
	print i, ":", v
	print "-" * 50

方法二:

with open("test_read.txt") as f:
    for i, v in enumerate(f.readlines()):
	print i, ":", v
	print "-" * 50

说明: 1、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 读取大文件。

2、for i, v in enumerate(f.readlines()) 语句和第一个类似,但是它先执行 f.readlines(),直接把 file 对象中所有的 line items 列表存进内存,在它们之上进行循环读取。 因此,读取大文件时用第一个语句,一般小文件这两个都可以

猜你喜欢

转载自my.oschina.net/u/2474096/blog/687581