Python islice正在读取相同的行
问题描述:
我有一个大的日志文件(> 1GB)应该被分析,所以我写了一个python程序。我已经使用islice
,所以我可以读取文件块(10,000行),这样我的服务器不会用完内存。Python islice正在读取相同的行
我查阅了一些关于stackoverflow的islice
解决方案并实现了一个,但程序无法按预期工作,因为isclice每次都读取相同的行(但在读完整个文件后正确停止...)。我不能使用with open
因为它与Python 2.5,我有蟒蛇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 =>我可以看到按顺序显示的行。
该错误肯定来自您的其他功能,你能否更新你的问题?
+0
你是对的,还有另一个问题。我已经测试了一个愚蠢的20行文件,它的工作原理,所以我必须在另一个地方搜索!感谢您的回答! – 2013-04-05 08:13:29
答
您可以使用GROUPBY这个
from itertools import groupby, count
with open(filename, 'r') as datafile:
groups = groupby(datafile, key=lambda k, line=count(): next(line)//10000)
for k, group in groups:
for line in group:
...
我试图从itertools的islice和它的作品。 因此,你的社交实现是错误的,如果你需要帮助,你应该发布它。 – lc2817 2013-04-05 07:55:42
在我的脚本之上,我写了'from itertools import islice' ...或者你是什么意思?我的'islice'代码在我的问题中 - 文字... – 2013-04-05 07:58:50
你是对的,还有另外一个问题。我已经测试了一个愚蠢的20行文件,它的工作原理,所以我必须在另一个地方搜索!感谢您的回答! – 2013-04-05 08:12:58