Problem mit Fallunterscheidung
Verfasst: Mittwoch 22. August 2007, 12:09
Hallo,
hier erst mal der Code:
das problem besteht an folgenden stellen:
hier wird grundsätzlich 'kein Eintrag' ausgegeben, auch wenn etwas in der datei steht
hier bekomme ich den fehler, das 'warning' kein gültiges schlüsselelement ist.
für lösungsvorschläge wäre ich euch sehr dankbar. einigen wird das script sicher noch bekannt vorkommen
MfG vikingrussel
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