Недавно возникла проблема с анализом журнала.
"Необходимо прочитать однострочный файл журнала размером 10 ГБ и напечатать все IP-адреса"
Проблема: Не удается прочитать построчночтобы избежать повреждения памяти.Приходится идти за знаком к персонажу.
Решение:
#!/usr/bin/python
import re
def getIP():
ip = re.compile('\d+|\\.')
out = []
with open("./ipaddr","r") as f:
while True:
c = f.read(1)
if not c:
break
if ip.match(c):
out.append(c)
for i in range(14):
c = f.read(1)
if ip.match(c):
out.append(c)
else:
if out:
yield "".join(out)
out = []
print str([ipad for ipad in getIP()])
Есть идеи по упрощению ??