为什么需要readlines(),而不是直接遍历文件句柄?

25 投票
3 回答
10389 浏览
提问于 2025-04-16 05:29

在Python中,经过

fh = open('file.txt')

之后,可以这样来逐行读取内容:

for l in fh:
    pass

那么,为什么我们还需要用到 fh.readlines() 呢?

3 个回答

1

readlines() 会返回一个包含多行内容的列表。如果你不打算逐行处理这些内容,这个功能会很有用。

16

主要是为了向后兼容。readlines这个功能在文件对象可以被遍历之前就已经存在了。

使用readlines并指定大小参数也是从文件中读取数据最快的方法之一,因为它一次性读取一大块数据,但不需要一次性为整个文件分配内存。

19

我想这段代码是早期文件处理的方式,那时候文件还不是迭代器,所以为了向后兼容才保留了这个写法。即使是写成一行代码,这种方式也有点多余,因为用 list(fh) 就能更直观地完成同样的事情。而且这样你还可以自由地使用 set(fh)tuple(fh) 等等。

1 详情请见 John La Rooy的回答

撰写回答