【发布时间】:2010-10-25 02:36:44
【问题描述】:
我需要在 python 中获取一个大文件(数十万行)的行数。在内存和时间方面最有效的方法是什么?
目前我这样做:
def file_len(fname):
with open(fname) as f:
for i, l in enumerate(f):
pass
return i + 1
有没有可能做得更好?
【问题讨论】:
-
您需要精确的行数还是一个近似值就足够了?
-
我会在 for 循环之前添加 i=-1,因为此代码不适用于空文件。
-
@Legend:我敢打赌 pico 正在考虑,获取文件大小(使用 seek(0,2) 或等值),除以近似行长度。您可以在开头阅读几行来猜测平均行长。
-
enumerate(f, 1)并放弃i + 1? -
@IanMackinnon 适用于空文件,但您必须在 for 循环之前将 i 初始化为 0。
标签: python text-files line-count