1
congeec 2016-06-05 17:06:58 +08:00
用 for line in f, readlines()会把文件里的内容都读进内存
https://stackoverflow.com/questions/17246260/python-readlines-usage-and-efficient-practice-for-reading |
2
21grams 2016-06-05 17:11:06 +08:00 via Android
大文件用第一个,原因显而易见
|
3
luofeiyu 2016-06-05 17:29:52 +08:00
内存受不了。
|
4
lukertty 2016-06-05 18:57:03 +08:00
后者快一点
|
5
loading 2016-06-05 19:21:57 +08:00 via Android
读一个大文件,自己对一下内存就知道了
|
6
billlee 2016-06-05 20:24:18 +08:00
方法一叫做逐行读取文本文件
方法二叫做逐个读取列表元素 |
7
OnTheRoad 2016-06-05 23:00:38 +08:00
第二种方法读取大文件时内存遭不住。
还是第一种方法最 Pythonic 。 参见(stackoverflow)[http://stackoverflow.com/questions/8009882/how-to-read-large-file-line-by-line-in-python] |
8
lll9p 2016-06-05 23:18:59 +08:00
用 linecache 怎么样?
|
9
jamesfjx 2016-06-06 06:21:36 +08:00 via iPad
|
10
practicer 2016-06-06 09:02:04 +08:00
for line in f 语句将 file 对象转换成 iterable object ,既然是可迭代对象,一次只加载一个 item ,解释器不会将所有 items 放进内存,因此节省了资源。在 python 2.3 以前,要用 f.xreadlines()方法读大文件,它和 xrange 的作用一样,都是处理 iter(object),但在 2.3 后,官方明确用 for line in f 读取大文件。
for line in f.readlines() 语句和第一个类似,但是它先执行 f.readlines(),直接把 file 对象中所有的 line items 列表存进内存,在它们之上进行循环读取。 因此,读取大文件时用第一个语句,一般小文件这两个都可以。 |