2010-09-02 2 views
0

мне нужно изменить метки времени в затруднительном логфайле, потому что половина из них неверна теперь, когда я обновил системное время ...изменение метки времени в связывания логфайла

каждую строка в файле имеет следующий формат:

04-Aug-2010 07:32:31.416 client 10.0.0.1#00000: query: google.com IN A + (10.0.0.1) 

все марки времени выходят на 8 часов. это то, что у меня есть до сих пор:

#!/usr/bin/python 
from time import strftime, strptime 

f = open("query.log","r") 
d = f.readlines() 

i = 0 
while not d[i].startswith("20-Aug"): 
    print strftime('%d-%b-%Y %H:%M:%S', strptime(d[i].split(".")[0], '%d-%b-%Y %H:%M:%S')) 
    i+=1 

любые идеи были бы оценены!

ответ

0
from datetime import datetime, timedelta 

tfmt = "%d-%b-%Y %H" 
tfmtlen = 14 

def changestamp(line, **kwargs): 
    linetime = datetime.strptime(line[:tfmtlen],tfmt) 
    linetime += timedelta(**kwargs) 

    return linetime.strftime(tfmt) + line[tfmtlen:]  

Выход:

>>> line = "04-Aug-2010 07:32:31.416 client 10.0.0.1#00000: query: google.c... 
>>> changestamp(line, hours=8) 
'04-Aug-2010 15:32:31.416 client 10.0.0.1#00000: query: google.com IN A + (... 
>>> changestamp(line, hours=-8) 
'03-Aug-2010 23:32:31.416 client 10.0.0.1#00000: query: google.com IN A + (... 
>>> changestamp(line, weeks=52, days=-365+1/3, hours=24) 
'04-Aug-2010 07:32:31.416 client 10.0.0.1#00000: query: google.com IN A + (... 
+0

WOW, спасибо! это решение фантастично !!! – crosswired

Смежные вопросы