在Python中使用readlines算坏代码吗?
我因为一个使用 file.readlines 的回答被踩了。批评者说用 readlines 是很糟糕的代码(还有其他一些非常无礼的评论)。
这真的那么糟糕吗?
4 个回答
7
嗯,说好也不好。不过,它会把整个文件都加载到内存中,这可能会导致问题,其实有更好的方法:
for line in file:
这个方法和下面这个做的事情是一样的:
for line in file.xreadlines():
这是一个改进版的readlines(),它不会把整个文件都放到内存里。而且它在Python 3中也能用,这可是个额外的好处,因为xreadlines()就不行。
所以不管它是不是“坏”的方法,反正没有理由去用它,永远都不要用。所以别用。 :)
9
我想问题出在 readlines()
这个函数上,因为它会把整个文件一次性加载到内存里,这样的话,内存占用可能会很大。
一种更省内存的方法是“懒惰”地处理文件,也就是逐行读取文件,按需读取,这样确实会更好。不过,我不太确定这种方法在效率上怎么样。
6
不,readlines
是可以的。你只需要记住,整个文件在某个时刻会被存储在内存中。