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

本文介绍了两种使用Python读取大文件的方法,并对比了两者的优缺点。第一种方法逐行读取,节省内存资源;第二种方法一次性读取所有行到内存中。文章建议对于大文件采用逐行读取的方式。

方法一:

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 列表存进内存,在它们之上进行循环读取。 因此,读取大文件时用第一个语句,一般小文件这两个都可以

转载于:https://my.oschina.net/u/2474096/blog/687581

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值