[Python-es] Procesar archivos de SYSLOG

lopz lowlifebob en gmail.com
Mar Abr 13 19:58:20 CEST 2010


> El 13/04/2010, a las 19:18, Carlos Herrera Polo escribió:
>
>> Estoy intentando utilizar ahora la libreria dnspython
>>
>> Lo que ocurre es que he podido identificar varios "hosts" como por
>> ejemplo:
>>
>> l.addthiscdn.com
>> login.live.com
>> meta.wikimedia.org
>> peru21.pe
>> translate.google.com.pe
>> zulu.tweetmeme.com
>> www.update.microsoft.com
>> banners.grupolarepublica.com.pe
>>
>> Pero ahora lo que intento, y con el fin de no complicar tanto la
>> agrupacion de los registros de log, almacenar en una columna unicamente el
>> dominio principal, siguiendo con el ejemplo, quisiera procesar algo como.
>>
>> login.live.com > live.com
>> banners.grupolarepublica.com.pe > grupolarepublica.com.pe
>> www.update.microsoft.com > microsoft.com
>>

Pues para esto te sirven las expresiones regulares hombre, pero si no
quieers complicarte la vida con ellas
usa lo que te recomendó arnau.


>> Respecto a cómo separar una URL en sus partes:
>>
>> http://docs.python.org/library/urlparse.html

Con urlparse podrás hacer lo que quieres.

Saludos!

>> Se me ocurre que se puede utilizar para esto la libreria dnspython, pero
>> hasta ahora unicamente he conseguido separar en listas cada componente del
>> dominio con la funcion
>> dns.name.from_text("host")
>>
>> Alguien tiene una mejor idea ? O talvez mas experiencia con dnspython
>>
>> Gracias por su apoyo
>>
>>
>>
>>
>>
>> El 13 de abril de 2010 11:08, Arnau Sanchez <pyarnau en gmail.com> escribió:
>> On 13/04/10 01:27, lopz wrote:
>>
>> No sé, yo no lo veo necesario usar un módulo de 3ros para parsear un
>> string, podrías hacerlo a base de strings y slices, o ahora que
>> aprendí lo básico de expresiones regulares me encantan, tiraría por
>> esto último.
>>
>> Cierto, con splits de cadenas y expresiones regulares debería ser muy
>> sencillo extraer cualquier información del log.
>>
>>
>> Lo de abrir todo el fichero grande es mucho para cargarlo en memória,
>> tendrás que usar buffers o algo así
>>
>> Como ya se ha comentado más de una vez, el objeto que devuelve Python al
>> abrir un fichero de texto es iterable (a cada paso devuelve una línea). Así
>> que no hay preocuparse del tamaño del fichero si se usa como un iterador:
>>
>> for line in open(path):
>>   print line
>>
>> Lo normal es crear generadores si el proceso consta de diferentes etapas.
>>

Bueno, sabía que regresaba un iterador, pero en el caso de abrir un
fchero de unos buenos megas 500 por ej (cosa que es raro en un fichero
de texto plano) no debería afectar el tamaño del fichero en la
velocidad de tu script?

>> Respecto a cómo separar una URL en sus partes:
>>
>> http://docs.python.org/library/urlparse.html
>>
>> _____

-- 
lopz es libre, usa --> GNU/linux gentoo

+--[RSA 2048]--+
|  ..o.o=+       |
|   o =o*.+      |
|  . . *oO .      |
|     .EBoo      |
|      o.S         |
+--[lopz.org]--+



Más información sobre la lista de distribución Python-es