hier erst mal der Code:
Code: Alles auswählen
# -*- coding: cp1252 -*-
from xml.dom.minidom import parse, parseString
from xml.etree.ElementTree import Element, SubElement, dump
from xml.etree.ElementTree import tostring as tt
from lxml import etree
import re
import sys
import codecs
# Öffnen von Log-Datei(en)
logfile = codecs.open('C:\Dokumente und Einstellungen\\maruscma\\Eigene Dateien\\backup-log\\backup01.log', 'r', 'utf-16')
#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>.*)')
inhaltlist = []
listcount = -1
#Einlesen der Zeilen nach Suchmuster
for z in logfile.readlines():
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')
inhaltdic['time'] = dauer8
inhaltlist.append(inhaltdic)
z9 = error.search(z)
if z9:
fehler9 = z9.group('r')
#else:
#fehler9 = 'kein(e) Fehler'
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:
liscount += 1
warning13 = z13.group('x')
inhaltdic['warning'] = warning13
inhaltlist.append(inhaltdic)
#else:
#warning13 == 'kein Eintrag'
z14 = reason.search(z)
if z14:
liscount += 1
reason14 = z14.group('y')
inhaltdic['reason'] = reason14
inhaltlist.append(inhaltdic)
#else:
#reason14 == 'kein Eintrag'
print 1, inhaltlist
#print inhaltlist
#for lang in inhaltdic.keys(): print lang, '\t', inhaltdic[lang]
sys.exit()
# XML-Baum erzeugen
# mit lxml.etree:
root = etree.Element('backup')
subroot = etree.SubElement(root, 'vorgang')
etree.SubElement(subroot, 'mediumname').text = medium1
etree.SubElement(subroot, 'sicherungvon').text = inhaltlist[0]['drive']
etree.SubElement(subroot, 'sicherungvon2').text = drive2
etree.SubElement(subroot, 'sicherungsart').text = inhaltlist[0]['art']
etree.SubElement(subroot, 'sicherungsart2').text = art3
subbegin = etree.SubElement(subroot, 'sicherungbegonnen')
etree.SubElement(subbegin, 'datum').text = inhaltlist[0]['dtimebeg']
etree.SubElement(subbegin, 'datum2').text = datum4
etree.SubElement(subbegin, 'uhrzeit').text = inhaltlist[0]['datebeg']
etree.SubElement(subbegin, 'uhrzeit2').text = uhrzeit10
subend = etree.SubElement(subroot, 'sicherungabgeschlossen')
etree.SubElement(subend, 'datum').text = inhaltlist[0]['dtimeend']
etree.SubElement(subend, 'datum2').text = datum5
etree.SubElement(subend, 'uhrzeit').text = inhaltlist[0]['dateend']
etree.SubElement(subend, 'uhrzeit2').text = uhrzeit11
etree.SubElement(subroot, 'verzeichnisse').text = inhaltlist[0]['directory']
etree.SubElement(subroot, 'verzeichnisse2').text = verzeichnisse6
etree.SubElement(subroot, 'dateien').text = inhaltlist[0]['files']
etree.SubElement(subroot, 'dateien2').text = dateien7
etree.SubElement(subroot, 'dauer').text = inhaltlist[0]['time']
etree.SubElement(subroot, 'dauer2').text = dauer8
#if warning:
etree.SubElement(subroot, 'warnung').text = inhaltlist[0]['warning']
etree.SubElement(subroot, 'warnung1').text = inhaltlist[1]['warning']
etree.SubElement(subroot, 'warnung2').text = warning13
#else:
#etree.SubElement(subroot, 'warnung').text = warning13
etree.SubElement(subroot, 'grund').text = inhaltlist[0]['reason']
etree.SubElement(subroot, 'grund1').text = inhaltlist[1]['reason']
etree.SubElement(subroot, 'grund2').text = reason14
etree.SubElement(subroot, 'fehler').text = fehler9
print etree.tostring(root, pretty_print=True)
#sys.exit()
#XML formatiert speichern
xml = etree.tostring(root, pretty_print=True)
xmlfile = file('C:\Dokumente und Einstellungen\\maruscma\\Eigene Dateien\\test.xml', 'w')
etree = Element(root)
xmlfile.write(xml)
xmlfile.close()
Code: Alles auswählen
if z14:
liscount += 1
reason14 = z14.group('y')
inhaltdic['reason'] = reason14
inhaltlist.append(inhaltdic)
#else:
#reason14 == 'kein Eintrag'
Code: Alles auswählen
#if warning:
etree.SubElement(subroot, 'warnung').text = inhaltlist[0]['warning']
etree.SubElement(subroot, 'warnung1').text = inhaltlist[1]['warning']
etree.SubElement(subroot, 'warnung2').text = warning13
#else:
#etree.SubElement(subroot, 'warnung').text = warning13
für lösungsvorschläge wäre ich euch sehr dankbar. einigen wird das script sicher noch bekannt vorkommen
MfG vikingrussel