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