[Python] Depurar un log

Iniciado por Maski84, 27 Diciembre 2011, 18:02 PM

0 Miembros y 1 Visitante están viendo este tema.

Maski84

Hola a Todos!!
Tengo un problema con python y he decidido la opción mas ruin... mendigar ayuda  XD

vamos al lio !

La idea principal es seleccionar solo la informacion que nos interese de  un log muy extenso (es información de servidores ) .Toda la info interesante la pasaremos a un nuevo .txt

En un primer paso he conseguido leer todo el primer log como texto y seleccionar solo los servidores que me interesan.

Peroooooooooo mi problema viene cuando quiero hacer mas restrictiva la busqueda .Solo quiero unas cuantas linias de cada servidor  (las que contengan por ejemplo la palabra "carpetaspersonales","home"... las demas no interesan para nada).

Ahora os pongo mi codigo y el momento en que me quedo pillado


serv = ("serv1","serv2","serv3")
var = ("home","carpetaspersonales")

with open('mylogoriginal.txt') as infile, open('mylogconerrores.txt', 'w') as outfile:
    for r in serv:
        for line in infile:
            if serv in line:
*Aqui esta el problema! si pongo un segundo condicional con las palabras clave ("var" ) me peta,he intentado un "and" en el anterior..nada , NO lo entiendo!!!  :-X !!               
*

                    outfile.write(line)               
print ("fin")
input ()

Son mis primeros pasos en python por lo que supongo que el error puede estar tambien  en el enfoque del problema y su solución.  Agradecería cualquier aportación .

Muchas gracias por vuestro tiempo !!! y un SALUDO  desde este primer post!

Maski84

Editado porque le faltaba info.thx.

Novlucker

¿Y el error que se dispara cual es? Porque entre otras cosas veo que pones "if serv in line", cuando a mi parecer debería de ser "if r in line"

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Maski84

Hola Novlucker,

Es verdad al copiar el codigo meti la zarpa, el bueno es este

serv = ("serv1","serv2","serv3")
var = ("home","carpetaspersonales")

with open('mylogoriginal.txt') as infile, open('mylogconerrores.txt', 'w') as outfile:
    for r in serv:
        for line in infile:
            if r in line:
                    outfile.write(line)               
print ("fin")
input ()

Cuando intento poner el segundo if para que dentro de la primera  seleccion de  linias solo me guarde las que tambien contengan las palabras clave contenidas en la lista   "var" me peta.Se cierra la consola de python de golpe y no me tira error.(edito con el idle que viene por defecto).No se como mostrarte el error que me pides.


Gracias y sorry por el zarpazo


Maski84

Por si le sirve a alguien :

Busca en un log linia por linia la info que nos interesa, en el ejemplo servidores... serv1 serv2....  una vez que  encuentra las linias , solo nos interesan las que contengan información  concreta, en este ejemplo carpetas... "home","carpetaspersonales"......

serv = ("serv1","serv2","serv3")
var = ("home","carpetaspersonales")

for r in serv:
    with open('mylogoriginal.txt') as infile, open('mylogconerrores.txt',mode = 'a') as outfile:
      for line in infile:           
            if r in line:
                for x in var:
                    if x in line:
                        outfile.write(line)
print ("Fin")
                       
input ()

Seguro que hay una manera de hacerlo mas elegante o mejor o mas rapido.Si alguien la quiere compartir mejor. Lo posteo por si puede ayudar !

Saludos!