Code: Alles auswählen
# -*- coding: cp1252 -*-
from lxml import etree
import codecs
import string
import re, sys
from os import listdir
from os.path import getmtime
from time import ctime
# Öffnen von Log-Datei(en)
sourceDir = 'C:\\Dokumente und Einstellungen\\maruscma\\Eigene Dateien\\backup-log\\'
sourceFilePattern = re.compile ('backup[0-1]+\.log')
#Suchmuster
medium = re.compile('^Mediumname: "(?P<m>[^"]+)')
drive = re.compile('^Sicherung von (?P<d>.*)')
art = re.compile('^Sicherungsart: (?P<a>.*)')
datebeg = re.compile ('^Sicherung begonnen am (?P<b>[0-9\.]+) um (?P<n>[0-9:]+)')
dtimebeg = re.compile ('^Sicherung begonnen am (?P<b>[0-9.]+)')
dateend = re.compile('^Sicherung abgeschlossen am (?P<e>[0-9\.]+) um (?P<v>[0-9:]+)')
dtimeend = re.compile('^Sicherung abgeschlossen am (?P<e>[0-9\.]+)')
directory = re.compile('^Verzeichnisse: (?P<i>.*)')
files = re.compile('^Dateien: (?P<f>.*)')
time = re.compile('^Zeit: (?P<t>.*)')
error = re.compile('^Der Vorgang wurde (?P<r>.*)')
warning = re.compile('^Warnung: (?P<x>.*)')
reason = re.compile('^Ursache: (?P<y>.*)')
destination = re.compile('^Aktives Sicherungsziel: (?P<z>.*)')
# Gibt Liste aller Dateien mit Tupel aus Dateiname und Aenderungsdatum,
# sortiert nach Aenderungsdatum, zurueck
def FileSortByDate(dir, pattern):
fileList = []
dateList = []
returnList = []
for file in listdir(dir):
if pattern.match(file):
fileModifyDate = getmtime(dir+file)
dateList.append(fileModifyDate)
fileList.append((dir+file, fileModifyDate))
dateList.sort()
for date in dateList:
n = 0
for file in fileList:
if file[1] == date:
returnList.append( file )
fileListRest = fileList[n+1:]
fileList = fileList[:n]
fileList.extend(fileListRest)
continue
n += 1
return( returnList )
def readin(file):
logfile = codecs.open(file[0], 'r', 'utf-16')
inhaltlist = search(logfile)
logfile.close()
return inhaltlist
#listcount = -1
#sys.exit()
def search(logfile):
inhaltlist = []
inhaltdic = {}
listcount = -1
for z in logfile.readlines():
#key, inhalt, listcount = suchen(listcount)
#print key, inhalt
#key = inhalt = ''
z1 = medium.search(z)
if z1:
medium1 = z1.group('m')
z2 = drive.search(z)
if z2:
listcount += 1
drive2 = z2.group('d')
inhaltdic['drive'] = drive2
inhaltlist.append(inhaltdic)
z3 = art.search(z)
if z3:
listcount += 1
art3 = z3.group('a')
inhaltdic['art'] = art3
inhaltlist.append(inhaltdic)
z4 = datebeg.search(z)
if z4:
listcount += 1
datum4 = z4.group('b')
uhrzeit10 = z4.group('n')
inhaltdic['datebeg'] = uhrzeit10
inhaltlist.append(inhaltdic)
z5 = dateend.search(z)
if z5:
listcount += 1
datum5 = z5.group('e')
uhrzeit11 = z5.group('v')
inhaltdic['dateend'] = uhrzeit11
inhaltlist.append(inhaltdic)
z6 = directory.search(z)
if z6:
listcount += 1
verzeichnisse6 = z6.group('i')
inhaltdic['directory'] = verzeichnisse6
inhaltlist.append(inhaltdic)
z7 = files.search(z)
if z7:
listcount += 1
dateien7 = z7.group('f')
inhaltdic['files'] = dateien7
inhaltlist.append(inhaltdic)
z8 = time.search(z)
if z8:
listcount += 1
dauer8 = z8.group('t')
tformat = re.findall(r'(\d+) ', dauer8)
inhaltdic['time'] = tformat
inhaltlist.append(inhaltdic)
z9 = error.search(z)
if z9:
listcount += 1
fehler9 = z9.group('r')
inhaltdic['error'] = fehler9
inhaltlist.append(inhaltdic)
else:
fehler9 = ''
inhaltdic['error'] = fehler9
inhaltlist.append(inhaltdic)
z11 = dtimebeg.search(z)
if z11:
listcount += 1
dtimebeg11 = z11.group('b')
inhaltdic['dtimebeg'] = dtimebeg11
inhaltlist.append(inhaltdic)
z12 = dtimeend.search(z)
if z12:
listcount += 1
dtimeend12 = z12.group('e')
inhaltdic['dtimeend'] = dtimeend12
inhaltlist.append(inhaltdic)
z13 = warning.search(z)
if z13:
listcount += 1
warning13 = z13.group('x')
inhaltdic['warning'] = warning13
inhaltlist.append(inhaltdic)
else:
warning13 = ''
inhaltdic['warning'] = warning13
inhaltlist.append(inhaltdic)
z14 = reason.search(z)
if z14:
listcount += 1
reason14 = z14.group('y')
inhaltdic['reason'] = reason14
inhaltlist.append(inhaltdic)
else:
reason14 = ''
inhaltdic['reason'] = reason14
inhaltlist.append(inhaltdic)
z15 = destination.search(z)
if z15:
listcount += 1
destination15 = z15.group('z')
inhaltdic['destination'] = destination15
inhaltlist.append(inhaltdic)
print 1, inhaltlist
#nhaltdic[key] = inhalt
#inhaltlist.append(inhaltdic)
return inhaltlist
#Einlesen der Zeilen nach Suchmuster
d = FileSortByDate(sourceDir, sourceFilePattern)
for v in d:
inhalt = readin(v)
MfG VikingRussel