script python para comparar 2 arquivos ignorando o timestamp

1

Eu tenho dois arquivos de log: log A e log B . Seu conteúdo é algo como:

log A

2014-07-12 09:50:33,904 dk,jnbxkmgl,mb.;/lkngjn.....

2014-07-12 09:56:45,060 ;lkjdgzkblnx.m.mc;xgjjjjjj....

2014-07-12 10:00:00,001 uzlk>FFhkshfGBKNMlaL>Djgdkgh....

log B

2015-06-12 08:50:33,904 gk;s'ahdsjgkagZCXseiutr....

2015-08-12 07:56:45,060 pisazffksikfdjggdkjhfg...

2015-09-12 10:00:00,001 ffffsajggjaaaaaa.....

Eu quero comparar os dois arquivos de log, mas ignorando o timestamp, ou seja, os primeiros 20 caracteres de ambos os arquivos. Eu sou novo no Python, então não sei como escrever um script Python que possa comparar esses dois arquivos ignorando o registro de data e hora.

    
por user123 08.09.2015 / 12:22

1 resposta

1

Se o carimbo de hora sempre tiver o mesmo formato - e. g. sempre com 20 caracteres, você poderia ignorá-los e compará-los usando lineA[20:] e lineB[20:] .

Para obter o diff de duas strings, você pode usar o difflib para python. O seguinte código foi retirado de esta resposta no StackOverflow

import difflib

cases=[('afrykanerskojęzyczny', 'afrykanerskojęzycznym'),
       ('afrykanerskojęzyczni', 'nieafrykanerskojęzyczni'),
       ('afrykanerskojęzycznym', 'afrykanerskojęzyczny'),
       ('nieafrykanerskojęzyczni', 'afrykanerskojęzyczni'),
       ('nieafrynerskojęzyczni', 'afrykanerskojzyczni'),
       ('abcdefg','xac')] 

for a,b in cases:     
    print('{} => {}'.format(a,b))  
    for i,s in enumerate(difflib.ndiff(a, b)):
        if s[0]==' ': continue
        elif s[0]=='-':
            print(u'Delete "{}" from position {}'.format(s[-1],i))
        elif s[0]=='+':
            print(u'Add "{}" to position {}'.format(s[-1],i))    
    print() 
    
por 08.09.2015 / 12:54

Tags