我有一个很大的日志文件(> 1GB)需要分析,所以我写了一个 python 程序。我用过islice
这样我就可以分块读取文件(10,000 行),这样我的服务器就不会耗尽内存。
我查了一些islice
stackoverflow 上的解决方案并实现了一个,但该程序无法按预期工作,因为 isclice 每次都读取相同的行(但在读取整个文件后正确停止......)。我无法使用with open
因为它附带了 python 2.5,所以我有 python 2.4...
我的代码如下:
n = 100000; # n lines
inf = open(fn, "r")
while True:
next_n_lines = list(islice(inf, n))
if not next_n_lines:
break
out_fn = produce_clean_logfile(next_n_lines)
a, t = main(out_fn)
send_log(a,t)
你知道出了什么问题吗?
提前致谢。 问候,约翰。
最佳答案
from itertools import islice
n = 2; # n lines
fn = "myfile"
inf = open(fn, "r")
while True:
next_n_lines = list(islice(inf, n))
if not next_n_lines:
break
print next_n_lines
适用于 python 2.5、2.6、2.7 => 我可以看到按顺序显示的行。
错误肯定来自您的其他功能,您可以更新您的问题吗?
关于Python islice 正在读取相同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15828550/