在Python中使用readlines算坏代码吗?

6 投票
4 回答
6606 浏览
提问于 2025-04-16 09:03

我因为一个使用 file.readlines 的回答被踩了。批评者说用 readlines 是很糟糕的代码(还有其他一些非常无礼的评论)。

这真的那么糟糕吗?

4 个回答

7

嗯,说好也不好。不过,它会把整个文件都加载到内存中,这可能会导致问题,其实有更好的方法:

 for line in file:

这个方法和下面这个做的事情是一样的:

 for line in file.xreadlines():

这是一个改进版的readlines(),它不会把整个文件都放到内存里。而且它在Python 3中也能用,这可是个额外的好处,因为xreadlines()就不行。

所以不管它是不是“坏”的方法,反正没有理由去用它,永远都不要用。所以别用。 :)

9

我想问题出在 readlines() 这个函数上,因为它会把整个文件一次性加载到内存里,这样的话,内存占用可能会很大。

一种更省内存的方法是“懒惰”地处理文件,也就是逐行读取文件,按需读取,这样确实会更好。不过,我不太确定这种方法在效率上怎么样。

6

不,readlines 是可以的。你只需要记住,整个文件在某个时刻会被存储在内存中。

撰写回答