我现在有一个非常简单的脚本,它使用 enumerate()
计算文本文件中的行数:
i = 0
f = open("C:/Users/guest/Desktop/file.log", "r")
for i, line in enumerate(f):
pass
print i + 1
f.close()
浏览一个 15GB 的日志文件大约需要 3 分半钟,其中约有 3000 万行。如果我能在两分钟或更短时间内完成此操作,那就太好了,因为这些是每日日志,我们希望每月进行一次分析,因此代码将必须处理 30 条约 15GB 的日志——可能超过一个半小时,我们希望最大限度地减少服务器上的时间和内存负载。
我也会接受一个好的近似/估计方法,但它需要大约 4 sig fig 准确……
谢谢!
原文由 Adrienne 发布,翻译遵循 CC BY-SA 4.0 许可协议
Ignacio 的回答 是正确的,但如果您有 32 位进程,则可能会失败。
但是,按块读取文件然后计算每个块中的
\n
字符可能会很有用。会做你的工作。
请注意,我没有以二进制形式打开文件,因此
\r\n
将转换为\n
,使计数更可靠。对于 Python 3,并使其更健壮,用于读取具有各种字符的文件: